Pregunta


Tengo una pregunta acerca del uso de macros para #undef Redefinir.
Tengo un global.h archivo que contiene una serie de # define-d macros. En el código que utiliza estas macros, me parece que los valores que sostienen las macros no son lo suficientemente genérico. Quiero volver a definir las macros para hacerlos más genérico. Escribí el siguiente fragmento de código para hacer precisamente eso:

 std::cout << endl << "Enter pitch threshold:" << endl;  
 std::cin >> pitchT;  
 #ifdef PitchThreshold  
  #undef PitchThreshold  
  #define PitchThreshold pitchT   
  #endif  

Mis preguntas son:
¿Si se usa un #undef de esta manera asegurar la redefinición de la macro en todos los archivos de origen, o es local a la función donde las líneas anteriores de código se escriben? ¿Cuál es el alcance de los operadores y #undef #define?
¿Qué puedo hacer yo (aparte de cambiar las macros en el archivo donde están # define-d sí mismo) para asegurar que las definiciones de macro se cambian en todos los archivos de origen?
Gracias,
Sriram

¿Fue útil?

Solución

#ifdef es una directiva de preprocesador, esto significa que se va a aplicar antes de compilar el código fuente. Esto significa que sólo el código fuente de 'abajo' se verá afectada. Si ejecuta su código fuente a través del preprocesador podrás ver el resultado. Eso le dará una visión más clara en el funcionamiento del preprocesador.

Otros consejos

El alcance del operador #undef es todo el archivo después de que se llama. Esto incluye todos los archivos que lo incluyen (debido a que el preprocesador sólo las cadenas de los archivos juntos.) Debido a que es parte del preprocesador que no tiene cosas raras como el ámbito de aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top