Articles of c pré processador

Como definir um símbolo de pré-processador no Xcode

É possível definir um símbolo para compilation condicional configurando propriedades em um projeto Xcode? Meu objective é criar um símbolo que esteja disponível para todos os arquivos, sem ter que usar import / include, para que um conjunto de classs comuns possa ter um comportamento especial em alguns projetos. Como o seguinte, mas com meus […]

Como usar #if dentro de #define no pré-processador C?

Eu quero escrever uma macro que cospe código com base no valor booleano de seu parâmetro. Então diga DEF_CONST(true) deve ser expandido para const , e DEF_CONST(false) deve ser expandido para nada. Claramente o seguinte não funciona porque não podemos usar outro pré-processador dentro de #defines: #define DEF_CONST(b_const) \ #if (b_const) \ const \ #endif

Definições de macro C # no pré-processador

C # é capaz de definir macros como é feito na linguagem de programação C com instruções pré-processador? Gostaria de simplificar a digitação regular de certas instruções de repetição, como as seguintes: Console.WriteLine(“foo”);

Existe uma maneira portátil de imprimir uma mensagem do pré-processador C?

Eu gostaria de poder fazer algo como #print “C Preprocessor got here!” para fins de debugging. Qual é a melhor maneira / mais portátil de fazer isso?

C ++: Uma macro pode expandir “abc” para ‘a’, ‘b’, ‘c’?

Eu escrevi um template variádico que aceita um número variável de parâmetros char , ie template struct Foo; Eu estava apenas me perguntando se havia algum truque de macro que me permitisse instanciar isso com uma syntax semelhante à seguinte: Foo ou Foo ou Foo etc. Basicamente, qualquer coisa que impeça você de escrever os […]

Macro retornando o número de argumentos que é dado em C?

É possível escrever uma macro C que retorna o número de seus argumentos? Eu quero algo que faça: foo(1) -> 1 foo(cat, dog) -> 2 foo(red, green, blue) -> 3 Melhor ainda se esta macro puder ser definida de tal forma que funcione com ## para que foo(1) -> bar1(1) foo(cat, dog) -> bar2(cat, dog) […]

É o tamanho de (enum) == sizeof (int), sempre?

É o tamanho de (enum) == sizeof (int), sempre? Ou é dependente do compilador? É errado dizer, como o compilador é otimizado para comprimentos de palavras (alinhamento de memory) ou seja, y int é o tamanho da palavra em um compilador específico? Isso significa que não há penalidade de processamento se eu usar enums, pois […]

Expansão de macro variadic do MSVC ++

Então eu tenho uma macro que funciona muito bem no GCC, mas não no compilador C ++ da Microsoft. Espero que alguém possa saber de uma solução alternativa, ou talvez possa me explicar por que ela se comporta dessa maneira. Tenho certeza de que essa macro não é exatamente “padrão”, mas realmente me ajudaria. Aqui […]

Como fazer uma string char a partir do valor de uma macro C?

Por exemplo, como evitar escrever o ‘func_name’ duas vezes? #ifndef TEST_FUN # define TEST_FUN func_name # define TEST_FUN_NAME “func_name” #endif Eu gostaria de seguir a regra do Ponto Único da Verdade . Versão do pré-processador C: $ cpp –version cpp (GCC) 4.1.2 20070626 (Red Hat 4.1.2-14)

O MSVC não expande corretamente __VA_ARGS__

Considere este código: #define F(x, …) X = x and VA_ARGS = __VA_ARGS__ #define G(…) F(__VA_ARGS__) F(1, 2, 3) G(1, 2, 3) A saída esperada é X = 1 and VA_ARGS = 2, 3 para ambas as macros, e é isso que estou obtendo com o GCC, no entanto, o MSVC expande isso como: X […]