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