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