Me gustaría pasar el nombre de un archivo de inclusión como un argumento de compilación para poder modificar una gran cantidad de parámetros de configuración. Sin embargo, mi compilación en C++ se realiza a través de un proceso similar a un makefile que elimina las comillas de los argumentos pasados al compilador y al preprocesador. Tenía la esperanza de hacer algo equivalente aAgregar comillas al argumento en el preprocesador de C++
#ifndef FILE_ARG
// defaults
#else
#include "FILE_ARG"
#endif
con mi línea de comandos que incluye -DFILE_ARG = foo.h. Por supuesto, esto no funciona, ya que el preprocesador no traduce FILE_ARG.
He intentado
#define QUOTE(x) #x
#include QUOTE(FILE_ARG)
que no funciona por la misma razón.
Por razones de secuencias de comandos, prefiero hacer esto en la línea de comandos que entrar y editar una línea de incluir en la rutina adecuada. ¿Hay alguna manera?
Dado que FILE_ARG no tiene comillas, la primera no funciona porque include espera comillas o <>. –
lo siento, probado con #define incorrecta. arreglado. –
Parece que funciona. ¿Por qué el doble define? –