Boost preprocessore: Campione non funziona
-
09-10-2019 - |
Domanda
ho provato a compilare un campione dal Boost. preprocessore biblioteca che è:
#include <boost/preprocessor/seq/insert.hpp>
#define SEQ (a)(b)(d)
BOOST_PP_SEQ_INSERT(SEQ, 2, c) // expands to (a)(b)(c)(d)
su Visual Studio 2008 e ottengo l'errore error C2065: 'b' : undeclared identifier
C'è un problema con il campione o mi manca qualcosa ??
Nota: La definizione sequenza stessa è ok. Per mostrare questo, ho compilato questo codice:
#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;
}
NOTA BENE: questo codice è il codice WTF, e non ho mai inteso utilizzare BOOST PP in questo modo: -)
Soluzione
Bene, si sta tentando di compilare un file sorgente contenente:
(a)(b)(c)(d)
Credo che si dovrebbe neanche mettere questo in un contesto in cui questo codice ha un senso, o semplicemente eseguire il preprocessore (senza compilare il risultato).
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow