c++ - 在编译器选项中定义字符串

标签 c++ vxworks wind-river-workbench

使用 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/

相关文章:

c++ - 在 C++ 中发送指向函数的动态指针数组

c++ - C++中的动态分配

c++ - 什么会延迟 VxWorks 任务的抢占?

shell - 以特定频率循环 VxWorks 中的命令

c++ - VxWorks 7 风河工作台 4 : How do I call a function in DKM from RTP?

c++ - 替换 QTime::elapsed()

c++ - 如何将字符串的大小存储在变量中

vxworks - 在vmware中构建多vxworks

linux - Wind River Linux,失败的依赖错误

c++ - 将 DKM 项目链接到内核镜像 (VIP) 项目作为 VxWorks Workbench4 中的子项目/额外模块