参考https://blog.csdn.net/yunjie167/article/details/77963551
近期在看版本号宏定义时,对宏定义中字符串连接的用法不解,也只查到了参考链接的用法。
#include <stdio.h>
#define MAINVER 2
#define SUBVER1 0
#define SUBVER2 1
#define STR(s) #s
#define VERSION(a,b,c) "System V" STR(a) "." STR(b) "." STR(c) " "__DATE__
//#define VERSION "System V" "2." "0" "." "1" " "__DATE__
void main()
{
printf("%s\n",VERSION);
}
执行输出
System V2.0.1 Jun 24 2021
问题就简化为#define VERSION "System V" "2." "0" "." "1" " "__DATE__中是如何把几个字符串连接起来的。
参考https://gaomf.cn/2017/10/05/string_literal_concatenate/
中对字符串字面量的介绍,在C语言中,有一个奇技淫巧:两个相邻的字符串字面量会自动被合并连接为一个。终于解答了我的疑问。