Estoy intentando generar el nombre de archivo de inclusión en macro. Esto se supone que es social en C++:Generar incluir nombre de archivo en una macro
#define INCLUDE_FILE "module_impl_win.hpp"
#include INCLUDE_FILE
esto funciona bien, pero tan pronto como trato de nombre de archivo generado se failes para compilar
#define INCLUDE_FILE(M) M##"_impl_win.hpp"
#include INCLUDE_FILE("module")
En realidad me da la advertencia en MSVC2010
C4067 advertencia: fichas inesperados siguiente directiva de preprocesador - que se espera un newlin
pero no incluye el archivo.
¿Cuál es el problema? ¿Cómo puedo deshacerme de eso?
Tienes que tener cuidado con este enfoque.'_impl_win' es un token identificador y dado que comienza con un guión bajo (y está en el espacio de nombres de la macro), está reservado para la implementación. Deberías separar el '_' inicial y concatenarlo por separado, aunque no estoy seguro de cómo hacerlo aquí ya que' _' es un identificador reservado. –
Por cierto, ¿qué tan portátil es? – ledokol
@James McNellis: Standard solo reserva los nombres con un guion bajo seguido de un carácter en mayúscula (o nombres que contengan doble guion bajo). No sé por qué Sutter recomienda evitar el uso del subrayado en todas partes. – ledokol