gpt4 book ai didi

c++ - 使用#define 声明一个函数

转载 作者:行者123 更新时间:2023-11-30 04:59:22 25 4
gpt4 key购买 nike

我遇到了一个 c++ 代码,其中一个函数在文件的标题部分定义如下

#define APPEND_VALUE(X, Y, I)\
{\
int idx = (Y*100+X);\
int idxn = idx + ValueCount[idx];\
TempVector[idxn] = I;\
CountVector[idx] += 1;\
}

(请注意,这不是所有代码,TempVector 和 CountVector 是在其他地方定义的)

在代码的后面,APPEND_VALUE 的使用方式与其他任何函数一样。我想知道上面的 (#define APPEND_VALUE) 代码和下面的代码有什么区别

void APPEND_VALUE(int X, int Y, int I)
{
int idx = (Y*100+X);
int idxn = idx + ValueCount[idx];
TempVector[idxn] = I;
CountVector[idx] += 1;
}

使用一个比另一个有什么优势?还有一个用于定义函数的技术名称,如第一个代码(使用#define 的代码)所示。

最佳答案

#define 是“预处理器”的一部分。本质上,这是在编译 C 文件之前处理的代码。大多数预处理器代码都在一个扩展名为“.h”的文件中(这就是为什么您在导入库时可能已经看到了)。

预处理器语言是原始的。例如,如果它执行“缺少括号的文本替换”,预处理器函数的结果可能不是您想要返回的结果(来源:@Deduplicator)。以这篇文章为例:#define Square(x) (x*(x)) .出于这个原因,以及许多其他原因,我更愿意尽可能使用常规 C 语言对其进行编码(请注意,在许多情况下,预处理器可能更快、更有帮助)。希望这可以帮助!

关于c++ - 使用#define 声明一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51243773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com