c-preprocessor

¿Cómo puedo ver un archivo fuente de C/C++ después del preprocesamiento en Visual Studio?

Digamos que tengo un archivo fuente con muchas directivas de preprocesador. ¿Es posible ver cómo se ve después de que el preprocesador se hace con él?

¿Por qué el preprocesador C interpreta la palabra "linux "como la constante"1"?

¿Por qué el preprocesador C en GCC interpreta la palabra linux (letras pequeñas) como la constante 1? Prueba.c: #include ... { int 1 = 5; return 0; } Que-por supuesto - produce un error. (BTW: No hay #define linux en el stdio.archivo h.)

Cómo hacer un variadic macro (número variable de argumentos)

Quiero escribir una macro en C que acepte cualquier número de parámetros, no un número específico Ejemplo: #define macro( ... a segunda definición sobrescribió la primera! El compilador con el que estoy trabajando es g++ (más específicamente, mingw)

Cómo detectar de forma fiable Mac OS X, iOS, Linux, Windows en preprocesador C?

Si hay algún código C/C++ multiplataforma que deba compilarse en Mac OS X, iOS, Linux, Windows, ¿cómo puedo detectarlos de manera confiable durante el proceso del preprocesador?

¿Cuándo son beneficiosas las macros de C++? [cerrado]

El preprocesador C es temido y rechazado justificadamente por la comunidad de C++. Las funciones integradas, los componentes ... o y si usted sabe de cómo lograr una de las respuestas sin el preprocesador señalar cómo en los comentarios de esa respuesta.

Sobrecarga de Macro en Número de Argumentos

Tengo dos macros FOO2 y FOO3: #define FOO2(x,y) ... #define FOO3(x,y,z) ... Quiero definir una nueva macro FOO de la sigui ... macro FOO (usando __VA_ARGS__ o de otra manera) para obtener el mismo efecto de enviar FOO(x,y) a FOO2, y FOO(x,y,z) a FOO3?

¿Cuál es el propósito de un solo signo de libra/hash (#) en su propia línea en el preprocesador de C/C++?

He estado mirando el código fuente de las bibliotecas Boost, y he notado que a menudo hay signos de libra individuales sin n ... arlo correctamente. ¿Cuál sería el efecto / efectos secundarios de tener signos aleatorios de libra / hash en todo el código?

C # define macro para la impresión de depuración

Tratando de crear una macro que se pueda usar para imprimir mensajes de depuración cuando se define DEBUG, como el siguiente ... ódigo: #define DEBUG 1 #define debug_print(args ...) if (DEBUG) fprintf(stderr, args) ¿Cómo se logra esto con una macro?

¿Por qué todos los archivos C escritos por mi profesor comienzan con un #?

¿Por qué todos los archivos C escritos por mi profesor comienzan con un #? Estoy revisando algunas notas del curso C, y ca ... na línea extra en el fin del cierre }) # #include <stdio.h> int main() { printf("Hello, World!"); return 0; }

¿Por qué se usan #ifndef y # define en los archivos de encabezado de C++?

He estado viendo código como este generalmente en el inicio de los archivos de encabezado: #ifndef HEADERFILE_H #define HEADERFILE_H Y al final del archivo es #endif ¿Cuál es el propósito de esto?

"No hay nueva línea al final del archivo" advertencia del compilador

¿Cuál es el motivo de la siguiente advertencia en algunos compiladores de C++? No hay nueva línea al final del archivo ¿Por qué debería tener una línea vacía al final de un archivo fuente/encabezado?

Cómo eliminar los miembros de forma manual

A diferencia de Objective-C, Swift no tiene preprocesador, por lo que todavía hay una manera de desaprobar manualmente a los miembros de una clase? Estoy buscando algo similar a esto: -(id)method __deprecated;

¿Por qué usar declaraciones aparentemente sin sentido do-while y if-else en macros?

En muchas macros de C/C++ estoy viendo el código de la macro envuelto en lo que parece un bucle do while sin sentido. He aqu ... g(X); } else No puedo ver lo que el do while está haciendo. ¿Por qué no escribir esto sin él? #define FOO(X) f(X); g(X)

Combinando C++ y C - ¿cómo funciona #ifdef cplusplus?

Estoy trabajando en un proyecto que tiene mucho código heredado C. Hemos comenzado a escribir en C++, con la intención de c ... os hacer? Vamos a mezclar C y C++ para el futuro previsible, y yo quiero estar seguro estamos cubriendo todo nuestras bases.

Definir macro preprocesador a través de cmake

¿Cómo defino una variable de preprocesador a través de cmake? El código equivalente sería #define foo.

MIN y MAX en C

¿Dónde se definen MIN y MAX en C, si es que se definen? ¿Cuál es la mejor manera de implementarlos, de la manera más genérica y segura posible? (Extensiones de compilador / builtins para compiladores convencionales preferidos.)

¿Cómo identificar la plataforma / compilador a partir de macros de preprocesador?

Estoy escribiendo un código multiplataforma, que debería compilar en linux, Windows, Mac OS. En Windows, debo admitir visual ... IN32 #include <windows.h> #endif Pero ¿cómo reconozco linux y mac OS? Lo que se define nombres (o etc.) Debería usar?

¿Cómo muestro el valor de un #define en tiempo de compilación?

Estoy tratando de averiguar qué versión de Boost my code piensa que está usando. Quiero hacer algo como esto: #error BOOST_V ... l preprocesador para encontrar la respuesta. Siento que tener una forma de hacer esto durante la compilación podría ser útil.

¿typedef y #definen lo mismo en c?

Me pregunto si typedef y #defineson lo mismo en c?

¿Cómo puedo comprobar el sistema operativo con una directiva de preprocesador?

Necesito mi código para hacer diferentes cosas basadas en el sistema operativo en el que se compila. Estoy buscando algo como ... ic stuff #else // do Unix-specific stuff #endif ¿Hay alguna manera de hacer esto? ¿Hay una mejor manera de hacer lo mismo?