Boost-Präprozessor: Probe nicht funktioniert
-
09-10-2019 - |
Frage
Ich habe versucht, eine Probe aus dem -Boost zu kompilieren. Preprocessor Bibliothek, die lautet:
#include <boost/preprocessor/seq/insert.hpp>
#define SEQ (a)(b)(d)
BOOST_PP_SEQ_INSERT(SEQ, 2, c) // expands to (a)(b)(c)(d)
auf Visual Studio 2008 und erhalte ich die Fehler error C2065: 'b' : undeclared identifier
Gibt es ein Problem mit der Probe oder bin ich etwas fehlt ??
Bitte beachten Sie: Die Reihenfolge Definition selbst in Ordnung ist. Um dies zu zeigen, ich diesen Code kompiliert:
#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;
}
HAFTUNGSAUSSCHLUSS: Dieser Code ist WTF-Code, und ich nie Gebrauch BOOST PP wie folgt bestimmt: -)
Lösung
Nun, Sie versuchen, eine Quelldatei zu kompilieren enthält:
(a)(b)(c)(d)
Ich nehme an, Sie sollten diese entweder in einem Zusammenhang bringen, wo dieser Code Sinn macht, oder einfach nur den Präprozessor laufen (ohne das Ergebnis zu kompilieren).
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow