2016-12-19 150 views
0

使用龙卷风2.2.1 GNU在编译器选项

在C/C++编译器选项,我试图定义字符串如下定义字符串: -DHELLO =“你好”,它不工作(这也对于-DHELLO = \“Hello \”和-DHELLO = \\“Hello \\”在其他平台中失败) 定义值-DVALUE = 12工作没有问题。

有没有人知道正确的方式来定义Tornado中的字符串?

+0

你试过了吗?-DHELLO =“\”你好\“”' – Amadeus

+0

@Amadeus:你是不是指'-DHELLO =“\”hello \“”'? (换句话说,逃避内部引号) –

+0

它..“不起作用”?那是什么意思? –

回答

0

这样一个宏的问题是,它通常不是一个字符串(在C/C++的意义上),只是一个预处理符号。由于预处理器编号可以在C/C++中原样使用,但是对于字符串符号,如果要将它们转换为C/C++字符串(除了添加转义引号外),您需要“串化”它们。

所以,这应该工作(无需额外的转义引号):

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

string s = STRINGIZE(HELLO) 

(注意双扩张获得的,而不是宏观stringized,即“你好”的宏,名字本身,即“你好”)