|
|
1
11
在编译器看到代码之前,预处理器会展开宏。这意味着,例如,宏参数可能会被多次求值。 用你的宏,你会得到类似于:
如您所见,它将评估这两个函数,然后一个额外的时间多一个。这就是为什么宏是邪恶的。
可以通过定义
如果必须使用宏,则必须将计算存储在变量中:
使用一个函数,将对每个调用进行求值
先前的
调用函数。也就是说,它有点像前面的代码块。它计算函数的参数,获取结果,然后将这些结果传递到
|
|
|
2
2
那个max宏对参数求值两次-而且由于参数是递归函数调用,这可能是perf问题的根源。 |
|
|
3
0
这是因为max的定义。您对findheight()进行了3次调用,而不是2次。 |
|
|
4
0
更好的选择是使用以下签名声明函数:
这将防止宏的递归扩展。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |