que preprocesamiento preprocesador lenguaje informatica ifdef funcion ejemplos directivas directiva define compilador c c-preprocessor logical-operators preprocessor-directive

preprocesamiento - funcion preprocesador en c++



C Prueba de definición de preprocesador de macros múltiples (5)

Creo que debería ser posible de esta manera:

#if defined block1 || defined block2 /*or any other boolean operator*/ /*Code*/ #endif

Mas informacion here

Busqué en el sitio pero no encontré la respuesta que estaba buscando, así que aquí hay una pregunta muy rápida.

Estoy tratando de hacer algo como eso:

#ifdef _WIN32 || _WIN64 #include <conio.h> #endif

¿Cómo puedo hacer tal cosa? Sé que _WIN32 está definido para ventanas de 32 y 64 bits, por lo que estaría bien con la detección de ventanas. Estoy más interesado en saber si puedo usar operadores lógicos como esos con directivas de preprocesador, y si es así, ya que lo anterior no funciona.

Compilando con gcc obtengo:

advertencia: tokens adicionales al final de la directiva #ifdef, y básicamente solo toma la primera MACRO e ignora el resto.


Debe usar ''si está definido'' en lugar de ''ifdef''

#if defined _WIN32 || defined _WIN64

Vaya error tipográfico, necesita el segundo ''definido'', por eso su prueba está fallando. Piense en ello como ''definido _WIN32'' como una sola declaración que devuelve verdadero / falso


Debes usar #if y el operador especial defined


Tratar:

#if defined(_WIN32) || defined(_WIN64) // do stuff #endif

La macro defined prueba si un nombre está o no definido y le permite aplicar operadores lógicos al resultado.


Uso definido:

#if defined(A) || defined(B) #include <whatever.h> #endif