我正在尝试弄清楚如何连接#define
'd int 到#define
'd 字符串使用C预处理器。我的编译器是 CentOS 5 上的 GCC 4.1。该解决方案也适用于 MinGW。
我想将版本号附加到字符串上,但让它工作的唯一方法是复制定义为字符串的版本号。
我能找到的最接近的方法是引用宏参数的方法,但它不适用于#define
s
这是行不通的。
#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" #MAJOR_VER #MINOR_VER
如果没有#
s 要么因为值是数字并且它会扩展到"/home/user/.myapp" 2 6
,这是无效的C.
这确实有效,但我不喜欢拥有版本定义的副本,因为我也需要它们作为数字。
#define MAJOR_VER 2
#define MINOR_VER 6
#define MAJOR_VER_STR "2"
#define MINOR_VER_STR "6"
#define MY_FILE "/home/user/.myapp" MAJOR_VER_STRING MINOR_VER_STRING
经典 C 预处理器问题....
#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)
#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" STR(MAJOR_VER) STR(MINOR_VER)
额外的间接级别将允许预处理器在宏转换为字符串之前对其进行扩展。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)