如何使用#define
表示一个值包含两个其他值的总和。是否允许 C 中的良好做法做这样的事情?
#define VALUE_A 2
#define VALUE_B 2
#define SUM_A_B (VALUE_A + VALUE_B)
如果没有,我该怎么做才能实现这个功能?
答案 0 :(得分:1)
Linux和GCC头文件经常执行,如果这是一个信任投票。 e.g:
$ grep -r 'define.*+' /usr/include/
...
/usr/include/linux/fdreg.h:#define FD_STATUS (4 + FD_IOPORT )
...
/usr/include/linux/elf.h:#define PT_GNU_STACK (PT_LOOS + 0x474e551)
...
/usr/include/i386-linux-gnu/asm/unistd_32.h:#define __NR_timer_settime (__NR_timer_create+1)
等
答案 1 :(得分:1)
如果您只需要整数常量(类型int
),则可以使用此类常量的枚举
enum { SUM_A_B = (VALUE_A + VALUE_B), };
可能的优势:
缺点是预处理器本身无法访问值本身。所以你不能用#if/#else
构造它。但你至少可以把它定义为
#define SUM_A_B SUM_A_B
所以#ifdef/#else
构造仍然有用。