определить строку в опциях компилятора

Использование Tornado 2.2.1 GNU

в опциях компилятора C / C ++ я пытаюсь определить строку следующим образом:
-DHELLO = «Hello», и он не работает (он также не работает для -DHELLO = \ «Hello \» и для -DHELLO = \\ «Hello \\», который работает на других платформах)
определение значения -DVALUE = 12 работает без проблем.

Кто-нибудь знает, как правильно определить строку в Торнадо?

0

Решение

Проблема такого макроса в том, что он обычно не является строкой (в смысле C / C ++), а просто символом препроцессора. С числами это действительно работает, потому что номер препроцессора можно использовать в C / C ++ как есть, но со строковыми символами, если вы хотите преобразовать их в строки C / C ++ (помимо добавления экранированных кавычек), вам нужно их «заштриховать».

Итак, это должно работать (без лишних кавычек):

#define _STRINGIZE(x) #x
#define STRINGIZE(x) _STRINGIZE(x)

string s = STRINGIZE(HELLO)

(Обратите внимание двойное расширение чтобы получить значение макроса в виде строки, то есть «Hello», вместо самого имени макроса, то есть «HELLO»)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]