我们的代码在printf中硬编码了至少20个不同文件的版本信息,例如:
printf("Software version v11.2");
这意味着每次更新时都会更改20个文件。
相反,我希望在common.h文件中使用宏和#include它,这样版本更新只是改变一个宏,就是全部。
我尝试过类似的事情:
#include <stdio.h>
#define VERSION "v11.2"
int main()
{
printf("Trying to print macro: ", VERSION);
}
但是这种“字符串”“字符串”在Java中不在C中。 任何想法如何实现它?
我们将使用gcc进行编译。
注意:宏也用在一些典型的* .rc文件中,我们不能使用变量,并且某些地方使用SQL查询解析这些rc文件。所以我们不能使用像char ver [] =“v11.2”
这样的变量答案 0 :(得分:11)
以下是两种可能的解决方案。
#include <stdio.h>
#define VERSION "v11.2"
int main()
{
// Let printf insert the string when doing the output.
printf("Trying to print macro: %s\n", VERSION);
// Let the compiler concatenate the strings.
puts("Trying to print macro: " VERSION);
// Let the compiler concatenate the strings, can be assigned to a variable.
const char buf[] = "Trying to print macro: " VERSION;
puts(buf);
}
答案 1 :(得分:0)
printf("Trying to print macro: %s", VERSION);
答案 2 :(得分:0)
是字符串,%s
应该有效。
int main()
{
printf("Trying to print macro: %s", VERSION);
}
答案 3 :(得分:0)
试试这个
#define PRINT(format,args...)\
\
do { \
printf(" your data...");\
} \
} while(0)