Aktualisierung durch den Antwortenden, Juli 2015: Anhand der obigen Kommentare zur Frage selbst können wir erkennen, dass es bei der eigentlichen Frage nicht um Makros an sich ging. Das eigentliche Problem, das der Fragesteller lösen wollte, war die Möglichkeit, eine Zeichenkette an eine Vorlage zu übergeben, die eine Reihe von Zeichen als Nicht-Typ-Vorlagenargumente akzeptiert. Hier ist eine ideone Demo einer Lösung für dieses Problem. Die dortige Implementierung erfordert C++14, aber es ist einfach, sie in C++11 zu konvertieren.
------------
Ich denke, wir brauchen ein deutlicheres Beispiel dafür, wie dieses Makro verwendet werden soll. Wir brauchen ein Beispiel für die variadische Vorlage. (Ein anderes Update : Diese Funktioniert nicht funktioniert bei mir unter g++ 4.3.3 in einer variadischen Vorlage nicht, selbst wenn die c++0x-Unterstützung aktiviert ist, aber ich denke, es könnte trotzdem interessant sein).
#include<iostream> // http://stackoverflow.com/questions/6190963/c-macro-to-convert-a-string-to-list-of-characters
#include "stdio.h"
using namespace std;
#define TO_STRING(x) #x
#define CHAR_LIST_7(x) TO_STRING(x)[0] \
, TO_STRING(x)[1] \
, TO_STRING(x)[2] \
, TO_STRING(x)[3] \
, TO_STRING(x)[4] \
, TO_STRING(x)[5] \
, TO_STRING(x)[6] \
int main() {
cout << TO_STRING(chicken) << endl;
printf("%c%c%c%c%c%c%c", CHAR_LIST_7(chicken));
}
Die Linie, die d
ist das, woran Sie interessiert sind. Ich habe weitere Beispiele angefügt, um zu zeigen, wie es aufgebaut ist. Ich bin neugierig auf @GMan's Link, um den Zählprozess zu automatisieren.