使用 Tornado 2.2.1 GNU
在 C/C++ 编译器选项中,我尝试按如下方式定义字符串: -DHELLO="Hello"并且它不起作用(对于 -DHELLO=\"Hello\"和 -DHELLO=\\"Hello\\"也适用于其他平台) 定义值 -DVALUE=12 可以正常工作。
有人知道在 Tornado 中定义字符串的正确方法吗?
最佳答案
这样一个宏的问题是,它通常不是一个字符串(在 C/C++ 意义上),只是一个预处理器符号。对于数字它确实有效,因为预处理器数字可以按原样在 C/C++ 中使用,但是对于字符串符号,如果你想将它们转换为 C/C++ 字符串(除了添加转义引号之外)你需要将它们“字符串化”。
所以,这应该可以工作(没有额外的转义引号):
#define _STRINGIZE(x) #x
#define STRINGIZE(x) _STRINGIZE(x)
string s = STRINGIZE(HELLO)
(注意双重扩展以获得字符串化宏的值,即“Hello”,而不是宏名称本身,即“HELLO”)
关于c++ - 在编译器选项中定义字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41230201/