Articles of pré processador

Macros de pré-processamento de várias linhas

Como fazer macro multiprocessador de linha? Eu sei fazer uma linha: #define sqr(X) (X*X) mas eu preciso de algo assim: #define someMacro(X) class X : public otherClass { int foo; void doFoo(); }; Como posso fazer isso funcionar? Este é apenas um exemplo, a macro real pode ser muito longa.

Representando grandes números no código-fonte para facilitar a leitura?

Existe uma maneira mais legível para representar números grandes no código-fonte de um aplicativo escrito em C ++ ou C? vamos por exemplo pegar o número 2,345,879,444,641 , em C ou C ++, se quisermos que um programa retorne esse número, return 2345879444641 . Mas isso não é realmente legível. No PAWN (uma linguagem de […]

Compilação condicional, dependendo da versão do framework em c #

Há algum símbolo pré-processador que permita algo como #if CLR_AT_LEAST_3.5 // use ReaderWriterLockSlim #else // use ReaderWriterLock #endif ou alguma outra maneira de fazer isso?

Qual é o valor de uma constante indefinida usada em # if?

Meu pré-processador parece assumir que as constantes indefinidas são 0 para avaliar as condições #if . Isso pode ser invocado, ou constantes indefinidas dão um comportamento indefinido?

Devo preferir constantes ao longo de definições?

Em C, devo preferir constantes acima de define? Eu tenho lido muito código ultimamente, e todos os exemplos fazem uso pesado de define.

Alternativa padrão para o truque ## __ VA_ARGS__ do GCC?

Existe um problema bem conhecido com argumentos vazios para macros variadic em C99. exemplo: #define FOO(…) printf(__VA_ARGS__) #define BAR(fmt, …) printf(fmt, __VA_ARGS__) FOO(“this works fine”); BAR(“this breaks!”); O uso de BAR() acima está de fato incorreto de acordo com o padrão C99, já que ele se expandirá para: printf(“this breaks!”,); Observe a vírgula à direita […]

Alterar o código de destino C # DllImport, dependendo do x64 / x86

Duplicar Possível: diretiva de pré-processador… C # Eu tenho uma dll externa c ++ para importar usando DLLImport. Se meu aplicativo está compilando em x64 eu preciso importar a versão x64 desta dll, se for uma compilation x86, eu preciso da dll x86. Qual a melhor maneira de alcançar isto? Idealmente, eu gostaria de alguma […]

Como comparar seqüências de caracteres em diretivas de pré-processador condicional de C

Eu tenho que fazer algo assim em C. Ele só funciona se eu usar um char, mas eu preciso de uma string. Como posso fazer isso? #define USER “jack” // jack or queen #if USER == “jack” #define USER_VS “queen” #elif USER == “queen” #define USER_VS “jack” #endif

Pré-processador de C ++ # define uma palavra-chave. É norma em conformidade?

Ajude a resolver o debate que está acontecendo nos comentários desta pergunta sobre bool e 1 : Um pré-processador C ++ em conformidade com os padrões permite usar o #define para redefinir uma palavra-chave? Em caso afirmativo, um pré-processador C ++ em conformidade com os padrões deve permitir isso? Se um programa C ++ redefinir […]

Quais são os caracteres válidos para nomes de macro?

Os nomes de macro no estilo C estão sujeitos às mesmas regras de nomenclatura que os identificadores? Depois de um upgrade do compilador, ele agora está emitindo esse aviso para um aplicativo herdado: warning #3649-D: white space is required between the macro name “CHAR_” and its replacement text #define CHAR_& 38 Essa linha de código […]