在编译器选项上定义字符串

define string at compiler options

本文关键字:定义 字符串 选项 编译器      更新时间:2023-10-16

使用龙卷风2.2.1 gnu

在C/C 编译器选项上,我试图定义字符串如下:-dhello =" Hello",并且它不起作用(也因-dhello = " Hello "和-dhello = \" Hello \",它在其他平台中工作)定义值-dvalue = 12无问题的工作。

有人知道在龙卷风中定义字符串的正确方法吗?

这样的宏的问题,通常不是字符串(从C/C 意义上),而只是预处理器符号。使用数字确实有效,因为预处理器编号可以在C/C 中使用,但是使用字符串符号,如果要将它们转换为C/C 字符串(除了添加ESC的引号外),您还需要"串联"它们。

所以,这应该有效(无需额外的引号):

#define _STRINGIZE(x) #x
#define STRINGIZE(x) _STRINGIZE(x)
string s = STRINGIZE(HELLO)

(注意 double Expandion 要获取宏字符串的 value ,即" Hello",而不是宏名称本身,即" Hello")