Обновление от автора, июль 2015 года. Из-за комментариев, приведенных выше по самому вопросу, мы видим, что реальный вопрос был не о макросах как таковых.Реальная проблема, которую хотел решить спрашивающий, состояла в том, чтобы иметь возможность передавать литеральную строку в шаблон, который принимает серию символов в качестве не типовых аргументов шаблона.Вот демоверсия ideone решения этой проблемы.Реализация там требует C ++ 14, но его легко конвертировать в C ++ 11.
------------
Я думаюнам нужен более четкий пример того, как этот макрос будет использоваться.Нам нужен пример шаблона variadic.(Другое Обновление : это не будет работать не работает для меня на g ++ 4.3.3 в шаблоне с переменными параметрами, даже когда включена поддержка c ++ 0x, но я думаю,это может быть интересно в любом случае.)
#include<iostream> // /8057501/makros-c-dlya-preobrazovaniya-stroki-v-spisok-simvolov
#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));
}
Строка, определяющая d
, - это то, что вас интересует. Я включил другие примеры, чтобы показать, как он построен.Меня интересует ссылка @ GMan для автоматизации процесса подсчета.