抱歉,如果这个问题看起来很幼稚,但我无法在任何地方找到明确答案.我必须根据先前定义的常量定义常量,例如
#define CONST_A 2
#define CONST_B 3
#define CONST_C CONST_A*CONST_B
Run Code Online (Sandbox Code Playgroud)
的实际值CONST_A和CONST_B被作为defineflags到GCC,所以我不能只写#define CONST_C 6.
如果我理解正确,这将告诉预处理器替换CONST_Cby 2*3和not的任何外观6,对吧?我主要担心的是性能,所以我更喜欢后者.我猜这可以通过使用static const而不是预处理器来完成#define.这是最好的选择吗?
提前致谢!
可能重复:
C宏并在括号中使用参数
我发现这个宏观问题非常有趣.
如果以下代码定义为宏
#define MULT(x, y) x * y
Run Code Online (Sandbox Code Playgroud)
并且函数调用为int z = MULT(3 + 2, 4 + 2);.期望输出为3 + 2 = 5且4 + 2 = 6且5*6为30.
但返回的输出是13.它需要3 + 2*4 + 2.因此,根据运算符的优先级,它首先计算2*4.
这是什么修复?如果像这样的小功能哪一个有效?定义功能还是使用宏?
c ×2