Boost préprocesseur: Sample ne fonctionne pas
-
09-10-2019 - |
Question
J'ai essayé de compiler un échantillon de la Boost. la bibliothèque de préprocesseur qui est:
#include <boost/preprocessor/seq/insert.hpp>
#define SEQ (a)(b)(d)
BOOST_PP_SEQ_INSERT(SEQ, 2, c) // expands to (a)(b)(c)(d)
sur Visual Studio 2008 et je reçois l'erreur error C2065: 'b' : undeclared identifier
Y at-il un problème avec l'échantillon ou suis-je manque quelque chose ??
S'il vous plaît noter: La définition de la séquence elle-même est ok. Pour le montrer, je compilé ce code:
#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;
}
Déni: ce code est le code WTF, et je jamais comme ça destiné à une utilisation BOOST PP: -)
La solution
Eh bien, vous essayez de compiler un fichier source contenant:
(a)(b)(c)(d)
Je suppose que vous devez soit mettre cela dans un contexte où ce code est logique, ou tout simplement courir le préprocesseur (sans compiler le résultat).
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow