我有这个:
#define VERSION_MAJOR 1
#define VERSION_MINOR 0
#define REVISION b
#define VERSION VERSION_MAJOR.VERSION_MINOR REVISION
#define _STRINGIFY(x) #x
#define STRINGIFY(x) _STRINGIFY(x)
integer version_major = VERSION_MAJOR;
integer version_minor = VERSION_MINOR;
string revision = STRINGIFY(REVISION);
string version_string = STRINGIFY(VERSION);
但是,这设置version_string
为"1.0 b"
。我想消除 VERSION_MINOR 和 REVISION 之间的空格。我试过这个:
#define VERSION VERSION_MAJOR.VERSION_MINOR##REVISION
但它会产生"1.VERSION_MINORREVISION"
. 显然,这也不起作用:
#define VERSION VERSION_MAJOR.VERSION_MINORREVISION
是否可以在没有空格的情况下连接两个预处理器值?
更新:我更改了语言,因为问题是关于预处理器而不是关于语言。我实际上需要它用于 LSL,尽管我最初使用 C 语法提出了这个问题,这对更多用户来说是熟悉的,但是 LSL 不允许通过使它们相邻来形成更长的字符串文字。