Pregunta

He intentado compilar una muestra de la Boost. preprocesador biblioteca que es:

#include <boost/preprocessor/seq/insert.hpp>
#define SEQ (a)(b)(d)
BOOST_PP_SEQ_INSERT(SEQ, 2, c) // expands to (a)(b)(c)(d)

en Visual Studio 2008 y me sale el error error C2065: 'b' : undeclared identifier

¿Hay un problema con la muestra o me estoy perdiendo algo ??

Tenga en cuenta: La propia definición de la secuencia es aceptable. Para mostrar esto, he recopilado este código:

#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/seq/for_each.hpp>

#define SEQ (w)(x)

#define MACRO(r, data, elem) BOOST_PP_CAT(elem, data)

struct w_
{
 int x;
};
void test()
{
 BOOST_PP_SEQ_FOR_EACH(MACRO, _, SEQ);
    x_.x = 3;
}

responsabilidad: Este código es el código de la WTF, y nunca tenía la intención de PP utilice el refuerzo de esta manera: -)

¿Fue útil?

Solución

Bueno, que está tratando de compilar un archivo fuente que contiene:

(a)(b)(c)(d)

supongo que debe o bien poner esto en un contexto en el que este código tiene sentido, o simplemente correr el preprocesador (sin compilar el resultado).

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