Возможный дубликат:
C Макросы для создания строк
У меня есть функция, которая принимает один аргумент типа char*, например f("string");
Если строковый аргумент определяется по ходу вызова функции, как макросы могут быть расширены внутри тела строки?
Например:
#define COLOR #00ff00
f("abc COLOR");
будет эквивалентно
f("abc #00ff00");
но вместо этого расширение не выполняется, и функция получает буквально abc COLOR.
В частности, мне нужно развернуть макрос точно \"#00ff00\", чтобы этот цитированный токен был объединен с остальной частью аргумента строки, переданной в f(), включая кавычки; то есть препроцессор должен завершить свою работу и приветствовать компилятор, преобразующий код с f("abc COLOR"); в f("abc \"#00ff00\"");