Mit X-Makro Liste erstellen
-
Hallo,
ich versuche seit einiger Zeit mittels X-Macros zur Compile-Time eine durch Komma getrennte Liste zu erzeugen, scheitere jedoch daran.
Also angenommen ich hab eine Datei test.h mit folgendem Inhalt:
TEST(a, "Test1") TEST(b, "Test2") TEST(c, "Test3") TEST(d, "Test4")Und eine Datei test.cpp mit (in etwa) folgendem Inhalt:
#include <iostream> int main() { //Insert Magic here const char *pCommaSeparatedList; #define TEST(a, b) //was hier? #include "test.h" #undef TEST std::cout << pCommaSeparatedList << '\n'; return 0; }Die Ausgabe sollte dann sein: "Test1, Test2, Test3, Test4"
Wichtig ist dass ganz hinten kein Komma angefügt ist. Außerdem möchte ich das möglichst ohne andere Bibliotheken machen wie Boost.Preprocessor. Der ganze Spaß sollte mit VS2015 und gcc funktionieren.
Funktioniert das mittels dem Präprozessor, wenn ja kann mir jemand weiterhelfen?Viele Grüße,
Raysp
-
So?

#include <iostream> #define TEST(a,b) ", " b int main() { const char *pCommaSeparatedList = #include "test.h" #undef TEST +2; std::cout << pCommaSeparatedList << '\n'; }
-
Argh, so einfach...

Ich hab nicht daran gedacht dass ich das Komma nach vorne schieben und dann einfach nur den Pointer inkrementieren könnte.Vielen Dank!