Possible Duplicate:
Creating C macro with ## and LINE (token concatenation with positioning macro)__LINE__ para diferentes nombres de variables
Estoy tratando de utilizar la macro __LINE__
para generar diferentes nombres de variables. Tengo una clase de referencia de referencia llamada Benchmark (ubicada en el espacio de nombres utils) y su constructor toma una cadena. Aquí está la definición de la macro que he creado:
#define BENCHMARK_SCOPE utils::Benchmark bm##__LINE__(std::string(__FUNCTION__))
Desafortunadamente esto hace que el siguiente error:
<some_file_name>(59): error C2374: 'bm__LINE__' : redefinition; multiple initialization
Esto me lleva a la conclusión de los __LINE__
macros no consigue expandieron. Creé mi macross según this post. ¿Tiene ideas de por qué __LINE__
no se expande?
EDIT: probablemente la información del compilador también sea relevante. Estoy utilizando Visual Studio 2010.
Hmm. ¿Has probado 'bm ## __LINE__' (con un espacio)? – Cameron
@Cameron Lo hice gracias a su comentario, pero nada ha cambiado. –
Bien, un truco más para probar: '#define _BENCHMARK_SCOPE (línea) utils :: Benchmark bm ## línea (...' con '#define BENCHMARK_SCOPE _BENCHMARK_SCOPE (__ LINE__)' – Cameron