Articles of clang

Existe um bug do compilador exposto pela minha implementação de um traço do tipo is_complete?

Eu escrevi este modelo de traço C ++ 11 para verificar se um tipo está completo: template using void_t = void; template struct is_complete : std::false_type {}; template struct is_complete<T, void_t> : std::true_type {}; e testou assim: struct Complete {}; int main() { std::cout << is_complete::value << is_complete::value << '\n'; } Eu esperava que o […]

GCC (/ Clang): Mesclando funções com instruções idênticas (dobra COMDAT)

Apenas curioso, os conjuntos de ferramentas GCC ou Clang implementam o equivalente do dobramento COMDAT idêntico (ICF) do MSVC atualmente? Se não, há algum plano para? Não consigo encontrar nenhum link autoritativo recente sobre o assunto, a não ser as antigas mensagens da lista de discussão do GCC. Se não, isso implica que as instanciações […]

Como fazer clang compilar para llvm IR

Eu quero que o clang compile meu código C/C++ para bytecode LLVM vez de executável binário. Como posso conseguir isso? E se eu obtiver o bytecode do LLVM , como posso usá-lo para compilá-lo para o executável binário. Basicamente eu quero adicionar alguns dos meus próprios códigos ao bytecode do LLVM antes de compilar para […]

Como essa forma de escopo é chamada?

Mais ou menos por acidente eu me deparei com essa forma de escopo DataSource *dataSource =({ NSInteger idx = [[self.tableView indexPathForSelectedRow] row]; DataSource *dataSource = [DataSource new]; dataSource.address = self.destinations[idx][0]; dataSource.name = self.destinations[idx][1]; dataSource; }); Eu acho que é uma boa maneira de criar e instanciar objects e variables, já que as variables ​​temporárias só […]

Existem arrays de comprimento variável em c ++?

Eu sempre pensei que arrays de comprimento variável não eram permitidos em c ++ (consulte: Por que os arrays de comprimento variável não são parte do padrão C ++? ) .Mas do que por que esse código compila e funciona? #include using namespace std; int main () { int n; cin >> n; int a[n]; […]

No mac, o g ++ (clang) falha ao pesquisar / usr / local / include e / usr / local / lib por padrão

Eu estou em um mac e eu usei homebrew para instalar o gmp . Kyumins-iMac:gcjlib math4tots$ g++ main.cpp -lgmp -lgmpxx In file included from main.cpp:2: ./gcjlib.hpp:4:10: fatal error: ‘gmpxx.h’ file not found #include ^ 1 error generated. Então eu expliquei explicitamente ao g++ para usar /usr/local/include Kyumins-iMac:gcjlib math4tots$ g++ main.cpp -lgmp -lgmpxx -I/usr/local/include ld: library […]

Alternando entre o GCC e o Clang / LLVM usando o CMake

Eu tenho um número de projetos construídos usando o CMake e gostaria de poder alternar facilmente entre usar o GCC ou o Clang / LLVM para compilá-los. Acredito (por favor corrija-me se estou enganado!) Que, para usar o Clang, preciso definir o seguinte: SET (CMAKE_C_COMPILER “/usr/bin/clang”) SET (CMAKE_C_FLAGS “-Wall -std=c99”) SET (CMAKE_C_FLAGS_DEBUG “-g”) SET (CMAKE_C_FLAGS_MINSIZEREL […]

Existe algum dictionary literal ou syntax de array em Objective-C?

Sempre foi possível criar NSArrays (e NSDictionaries / NSNumber) com chamadas de método vararg, como: [NSArray arrayWithObjects: @”a”, @”b”, @”c”, nil]; Esses podem ser criados com literais in-line em uma nova melhoria para o LLVM e o Clang?

Como compilar / link Boost com clang ++ / libc ++?

A resposta a esta pergunta Por que não pode clang com libc ++ no modo c ++ 0x link este exemplo boost :: program_options? states “Você precisa reconstruir o boost usando clang ++ -stdlib = libc ++.” Estou usando o MacOS Lion com o clang v3.0. Como eu construo o Boost v1.48.0 usando o clang […]

constexpr e boot de um ponteiro estático const void com reinterpret cast, qual compilador está certo?

Considere o seguinte trecho de código: struct foo { static constexpr const void* ptr = reinterpret_cast(0x1); }; auto main() -> int { return 0; } O exemplo acima compila bem em g ++ v4.9 ( Live Demo ), enquanto ele falha em compilar no clang v3.4 ( Live Demo ) e gera o seguinte erro: […]