我希望在我的代码中添加一些条件指令来控制不同的构建,例如:
#if VERSION > 100
/* Compiling here */
#endif
Run Code Online (Sandbox Code Playgroud)
问题是"VERSION"在其他代码中我无法改变.它被定义为一个字符串:
#define VERSION "101"
Run Code Online (Sandbox Code Playgroud)
我想知道是否有某种宏或指令将字符串转换为数字,所以我可以简单地做
#if STRING_TO_NUMBER(VERSION) > 100
/* Compiling here */
#endif
Run Code Online (Sandbox Code Playgroud)
这可能吗?
PS.看来我的描述不太清楚.此要求的主要目的是控制版本分支.例如,在旧版本的100版之前,此程序需要old_function().在此版本之后,所有功能都已迁移到new_function.所以我需要编写这样的代码:
#if VERSION >= 100
old_function();
#else
new_function();
#endif
#if VERSION >= 100
int old_function()
{
...
}
#else
int new_function()
{
...
}
#endif
Run Code Online (Sandbox Code Playgroud)
您可以看到只编译了一个函数.因此,必须在预处理阶段决定条件,而不是在运行时.
棘手的部分是,VERSION被定义为一个字符串,它提出了这个问题.