Preguntas con la etiqueta [c-preprocessor]

Lista c-preprocessor preguntas

Pasar literal de matriz como argumento macro

1
respuestas
19
votos
13.2k
vistas

Esto me ha estado molestando durante algún tiempo, por ejemplo, si intento escribir este código: // find the length of an array #define ARRAY_LENGTH(arr) (sizeof(arr)/sizeof(int)) // declare an array together

Imprimo la salida del preprocesador C usando gcc -E a.c La salida contiene muchas líneas como # 1 "a.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "a.c" # 1

¿Hay alguna manera de incluir un archivo de texto completo como una cadena en un programa C en tiempo de compilación? algo como: archivo.txt: This is a little text file

Me preguntaba si es posible iterar sobre los argumentos pasados ​​a una macro variada en C99 o usar alguna extensión de GCC. Por ejemplo, ¿es posible escribir una macro genérica

Digamos que tengo un archivo fuente con muchas directivas de preprocesador. ¿Es posible ver cómo se ve una vez que el preprocesador haya terminado?

Macro de tamaño de matriz que rechaza punteros

10
respuestas
79
votos
20.5k
vistas

La macro estándar de tamaño de matriz que a menudo se enseña es #define ARRAYSIZE(arr) (sizeof(arr) / sizeof(arr[0])) o alguna formación equivalente. Sin embargo, este tipo de cosas tiene éxito

Macro vs función en C

11
respuestas
126
votos
105.4k
vistas

A menudo veo casos en los que usar una macro es mejor que usar una función. ¿Alguien podría explicarme con un ejemplo la desventaja de una macro frente a una

#definir macro para depurar la impresión en C?

14
respuestas
259
votos
266.1k
vistas

Intentando crear una macro que pueda usarse para imprimir mensajes de depuración cuando se define DEBUG, como el siguiente pseudocódigo: #define DEBUG 1 #define debug_print(args ...) if (DEBUG) fprintf(stderr, args)

¿Existe una definición de macro de una línea para determinar el endianidad de la máquina? Estoy usando el siguiente código pero convertirlo a macro sería demasiado largo: unsigned char test_endian(

Uso en el mundo real de X-Macros

8
respuestas
92
votos
35.6k
vistas

Acabo de enterarme de X-Macros . ¿Qué usos de X-Macros en el mundo real has visto? ¿Cuándo son la herramienta adecuada para el trabajo?

Quiero escribir una macro en C que acepte cualquier número de parámetros, no un número específico ejemplo: #define macro( X ) something_complicated( whatever( X ) ) ¿Dónde Xestá cualquier número

Necesito que mi código haga diferentes cosas según el sistema operativo en el que se compila. Estoy buscando algo como esto: #ifdef OSisWindows // do Windows-specific stuff #else // do

El preprocesador de volcado GCC define

6
respuestas
313
votos
174.4k
vistas

¿Hay alguna manera de que gcc/g++ descargue las definiciones de preprocesador predeterminadas desde la línea de comando? Me refiero a cosas como __GNUC__, __STDC__y así sucesivamente.

Definir una macro de preprocesador a través de CMake

6
respuestas
424
votos
401.4k
vistas

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

Preprocesador de C++ __VA_ARGS__ número de argumentos

13
respuestas
131
votos
182.9k
vistas

Pregunta sencilla para la que no pude encontrar respuesta en la red. En macros de argumentos variados, ¿cómo encontrar el número de argumentos? Estoy de acuerdo con el preprocesador boost,