如何在 C 中用单个赋值定义多个#define

How do I define multiple #define with single assign value in C

我发现了一些关于 How do I #define multiple values C / C++ 的相关问题。但这不是我要找的。相反,我想做相反的事情。

我们可以简单地分配这样的东西

int a,b,c,d,e;
a = b = c = d = e = 5;
printf("Value %d",e);

但我正在寻找的是如何将下面的定义组合成一行,给定要分配的固定值。

#define SIZE_OF_NODE_ADD   4
#define SIZE_OF_KEY_ADD    4
#define SIZE_OF_ID_ADD     4
#define SIZE_OF_PW_ADD     4

可以吗?像

#define SIZE_OF_NODE_ADD = SIZE_OF_KEY_ADD = SIZE_OF_ID_ADD = SIZE_OF_PW_ADD = 4
/* The syntax is wrong, I just emphasize for easier understanding what I am looking for*/  

在 C 标准中,预处理器语句以换行结束,因此您必须这样做:

#define SIZE_OF_NODE_ADD   4
#define SIZE_OF_KEY_ADD    4
#define SIZE_OF_ID_ADD     4
#define SIZE_OF_PW_ADD     4

不允许使用多个定义语句。(甚至很难阅读)

好吧,#define 语句可以处理多行,在行尾使用 '\',接下来没有任何其他字符,因此您可以创建精美的 MACROS (Multi-line DEFINE directives?)。但是您的问题的一个简单解决方案可能是使用参考定义,因此您只需更改该定义即可更改其他值。

#define REFERENCE_VALUE 4

#define SIZE_OF_NODE_ADD   REFERENCE_VALUE
#define SIZE_OF_KEY_ADD    REFERENCE_VALUE
#define SIZE_OF_ID_ADD     REFERENCE_VALUE
#define SIZE_OF_PW_ADD     REFERENCE_VALUE

记住 REFERENCE_VALUE 必须在文件中使用之前,否则无法编译。