Articles of compiler construction

Existe uma maneira de instalar o gcc no OSX sem instalar o Xcode?

Eu pesquisei o inferno, e parece que não há como instalar o gcc no OS X sem instalar o Xcode (que ocupa 1,5 GB de espaço). Tudo que eu preciso é o gcc e nenhum outro lixo que vem com o Xcode. E neste momento, vou pegar qualquer outro tipo de compilador C. Eu sei […]

Template dentro de template: por que “` >> ‘deve ser `>>’ dentro de uma lista de argumentos de template aninhada”

Eu sei que quando estamos usando o template dentro de outro template, devemos escrevê-lo assim: vector<pair > s; e se nós escrevermos sem o espaço em branco: vector<pair> s; nós vamos receber um erro: `>> ‘deve ser`>>’ dentro de uma lista de argumentos de modelo nested Eu vejo que isso é compreensível, mas eu simplesmente […]

Que problemas posso esperar para compilar o código C com um compilador C ++?

Se você pegar uma base de código C existente e compilá-la com um compilador C ++, que tipo de problemas você espera obter? Por exemplo, acho que atribuir um inteiro a um valor com um tipo enumerado falhará em C ++, enquanto é legal (se for um pouco desagradável) em C. Se eu não enrolar […]

Como criar uma biblioteca estática com o g ++?

Alguém pode me dizer como criar uma biblioteca estática de um arquivo .cpp e .hpp? Preciso criar o .o e o .a? Também gostaria de saber como posso compilar uma biblioteca estática e usá-la em outro código .cpp. Eu tenho header.cpp , header.hpp . Eu gostaria de criar o header.a . Teste o header.a em […]

Delegar as alterações de comportamento de armazenamento em cache no Roslyn

Dado o seguinte código: public class C { public void M() { var x = 5; Action action = y => Console.WriteLine(y); } } Usando o VS2013, .NET 4.5. Ao observar o código descompilado, podemos ver que o compilador está armazenando em cache o delegado no site de chamada: public class C { [CompilerGenerated] private […]

C compilador afirma – como implementar?

Gostaria de implementar uma “declaração” que evita a compilation, em vez de falhar no tempo de execução, no caso de erro. Eu atualmente tenho um definido como este, que funciona muito bem, mas que aumenta o tamanho dos binários. #define MY_COMPILER_ASSERT(EXPRESSION) switch (0) {case 0: case (EXPRESSION):;} Exemplo de código (que não consegue compilar). #define […]

Detectando tempo de compilation da arquitetura da CPU

Qual é a maneira mais confiável de descobrir a arquitetura da CPU ao compilar o código C ou C ++? Tanto quanto eu posso dizer, diferentes compiladores têm seu próprio conjunto de definições de pré-processador não padrão ( _M_X86 em MSVS, __i386__ , __arm__ no GCC, etc). Existe uma maneira padrão de detectar a arquitetura […]

operador implícito usando interfaces

Eu tenho uma class genérica que estou tentando implementar o tipo de conversão implícita. Embora funcione principalmente, não funcionará para a transmissão de interface. Após investigação adicional, descobri que há um erro do compilador: “Conversão definida pelo usuário da interface” que se aplica. Embora eu entenda que isso deve ser imposto em alguns casos, o […]

Qt: não é possível encontrar o erro -LGL

Eu apenas reinstalei o QtCreator, criei um novo projeto ( Qt Application ) e obtive isso após a compilation: /usr/bin/ld: **cannot find -lGL** collect2: error: ld returned 1 exit status make: *** [untitled1] Error 1 18:07:41: The process “/usr/bin/make” exited with code 2. Error while building/deploying project untitled1 (kit: Desktop Qt 5.1.0 GCC 32bit) When […]

O que é o Stream Fusion do Haskell?

O que é o Stream Fusion do Haskell e como usá-lo?