Articles of g ++

g ++ ligando dependência de ordem ao ligar o código c ao código c ++

Antes de hoje, sempre acreditei que a ordem em que os objects e bibliotecas eram passados ​​para o g ++ durante o estágio de vinculação não era importante. Então, hoje, eu tentei link do código c ++ para o código c. Enfiei todos os headers C em um bloco externo “C”, mas o vinculador ainda […]

Compilando um programa C ++ com o gcc

Pergunta: Como compilar um programa C ++ com o compilador gcc? info.c: #include using std::cout; using std::endl; int main() { #ifdef __cplusplus cout << "C++ compiler in use and version is " << __cplusplus << endl; #endif cout <<"Version is " << __STDC_VERSION__ << endl; cout << "Hi" << __FILE__ << __LINE__ << endl; } […]

Recursão de cauda em C ++

Alguém pode me mostrar uma function recursiva de cauda simples em C ++? Por que a recursion da cauda é melhor, se é mesmo? Que outros tipos de recursion existem além da recursion da cauda?

Inicialização de membro de dados estáticos

Por que a boot de membro de dados estáticos deve estar fora da class? class X { public: int normalValue = 5; //NSDMI static int i; }; int X::i = 0; Por que o membro de dados estáticos (aqui “i”) é apenas uma declaração, não uma definição?

Escapando no makefile

Eu estou tentando fazer isso em um makefile e ele falha horrivelmente: M_ARCH := $(shell g++ -dumpmachine | awk ‘{split($1,a,”-“);print a[1]}’) Você sabe por quê? Eu acho que tem a ver com escaping, mas o que e onde?

Por que preciso usar typedef typename em g ++, mas não em VS?

Já fazia um tempo desde que o GCC me pegou com este, mas aconteceu hoje. Mas eu nunca entendi porque o GCC requer typedef typename dentro dos templates, enquanto o VS e eu acho que o ICC não. É o typedef typename coisa um “bug” ou um padrão overstrict, ou algo que é deixado para […]

Biblioteca padrão C ++ e coletor de lixo Boehm

Eu quero desenvolver um aplicativo C ++ multi-threaded (onde eventualmente a maior parte do código C ++ seria gerado pelo próprio aplicativo, que poderia ser visto como uma linguagem específica de domínio de alto nível) no Linux / AMD64 / Debian com o GCC 4.6 (e provavelmente o mais recente padrão C ++ 11). Eu […]

Resultado de ponto flutuante diferente com otimização ativada – bug do compilador?

O código abaixo funciona no Visual Studio 2008 com e sem otimização. Mas só funciona em g ++ sem otimização (O0). #include #include #include double round(double v, double digit) { double pow = std::pow(10.0, digit); double t = v * pow; //std::cout << "t:" << t << std::endl; double r = std::floor(t + 0.5); //std::cout […]

Por que o typeid.name () retorna caracteres estranhos usando o GCC e como imprimir nomes não-manipulados?

Por que quando eu corro este main.cpp : #include #include using namespace std; struct Blah {}; int main() { cout << typeid(Blah).name() << endl; return 0; } Compilando-o com a versão 4.4.4 do GCC: g++ main.cpp Eu entendi isso: 4Blah No Visual C ++ 2008, gostaria de receber: struct Blah Existe uma maneira de fazer […]

Como habilitar o C ++ 11 no gcc?

Eu uso o gcc 4.8.1 de http://hpc.sourceforge.net no Mac OSX Mountain Lion. Eu estou tentando compilar um programa C ++ que usa a function to_string em . Eu preciso usar o flag -std=c++11 toda vez: g++ -std=c++11 -o testcode1 code1.cpp Existe uma maneira de include esse sinalizador por padrão?