Articles of c preprocesador

Detectando Endianness

Actualmente estoy tratando de crear un código fuente en C que maneje correctamente la E / S independientemente de la endianidad del sistema de destino. Seleccioné “little endian” como mi convención de E / S, lo que significa que, para la CPU de Big Endian, necesito convertir datos mientras escribo o leo. La conversión no […]

¿Cómo generar una nueva línea en una macro cpp?

¿Cómo escribo una macro cpp que se expande para incluir nuevas líneas?

¿Cuál es una buena referencia que documenta los patrones de uso de X-Macros en C (o posiblemente en C ++)?

Una definición básica y ejemplo y algunas referencias para ” X-Macros ” se dan en esta entrada de wikipedia en el pre-procesador C : Un X-Macro es un archivo de encabezado (normalmente utiliza una extensión “.def” en lugar de la tradicional “.h”) que contiene una lista de llamadas de macro similares (que pueden denominarse “macros […]

¿Puedes hacer operadores personalizados en C ++?

¿Es posible crear un operador personalizado para que pueda hacer cosas como esta? if (“Hello, world!” contains “Hello”) … Nota: esta es una pregunta separada de “¿Es una buena idea …”;)

¿Cuál es la diferencia entre #define y const?

Posibles duplicados: ¿Por qué alguien usaría #define para definir constantes? diferencia entre una macro y una const en c ++ C ++ – enum vs. const vs. #define ¿Cuál es la diferencia entre usar #define y const para crear una constante? ¿Alguien tiene una ventaja de rendimiento sobre el otro? Naturalmente prefiero usar el const […]

Diferencia entre Enum y Definir Declaraciones

¿Cuál es la diferencia entre usar una instrucción define y una instrucción enum en C / C ++ (y hay alguna diferencia al usarlas con C o C ++)? Por ejemplo, cuando debería uno usar enum {BUFFER = 1234}; encima #define BUFFER 1234

¿Pueden las macros estar sobrecargadas por el número de argumentos?

¿Cómo funciona esto ? ¿Cómo se puede implementar una macro variadica C99 / C ++ 11 para expandirse a diferentes cosas sobre la única base de cuántos argumentos se le otorgan?

GCC, stringification y GLSL en línea?

Me gustaría declarar las cadenas de sombreado GLSL en línea usando macro cadenas: #define STRINGIFY(A) #A const GLchar* vert = STRINGIFY( #version 120\n attribute vec2 position; void main() { gl_Position = vec4( position, 0.0, 1.0 ); } ); Esto se comstack y funciona bien con VS2010 pero no comstack en gcc con: error: invalid preprocessing […]

Ver macros C expandidos

Si quiero expandir una macro C, ¿cuáles son algunas buenas maneras de hacerlo (además de rastrearla manualmente)? Por ejemplo, GTK_WIDGET_SET_FLAGS , usa una macro que usa una macro que usa una macro (o dos) … Quiero simplemente verlo de alguna manera expandido automágicamente, en lugar de buscar cada macro, en cada paso del camino. ACTUALIZAR […]

Sangrado #defines

Sé que #define s, etc. normalmente nunca se sangran. ¿Por qué? Estoy trabajando en algún código en el momento que tiene una mezcla horrible de #define s, #ifdef s, #else s, #endif s, etc. Todos estos a menudo se mezclan con el código C normal. La falta de sangría de #define hace que sea difícil […]