我见过this topic它做介绍了“字符串”操作:C预处理器:用前导零对字符串int进行处理?
#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)
是否有可能与前导零字符串化?比方说,我MAJOR_REV需要在这种情况下,两个字符“02”和MINOR_REV 4个字“0006” 如果我做的:
#define MAJOR_VER 02
#define MINOR_VER 0006
的值将其他地方的应用被视为八进制,这我不不想要。
我的直觉是这将是足够的硬度,即使升压::预处理器,它是不是真的值得做。将“MAJOR_VER_STR”和“MINOR_VER_STR”定义为带前导零的字符串。你可以创建一个脚本来设置主版本和次版本以及匹配的字符串:'setversion --major = 2 --minor = 7 header.h'这个工作。 – 2015-02-17 21:39:20
它可以用Boost.Preprocessor完成,但我相信你必须配合“插槽”才能做到这一点。如果初始数字格式不同,如主版本10的'#define MAJOR_VER(1)(0)',则可以更简单地完成。 – 2015-02-18 01:49:38
您是否需要使用预处理器?你不能为它编写常规的C代码吗?对不起,如果这是一个愚蠢的问题。 – 2015-02-18 09:27:39