我遇到了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的代码)中显示的函数中,还有一个技术名称。
答案 0 :(得分:1)
#define是称为“预处理器”的一部分。本质上,这是在编译C文档之前要处理的代码。大多数预处理器代码都在扩展名为“ .h”的文件中(这就是为什么在导入库时可能会看到的原因。)
预处理器语言是原始语言。例如,如果执行“缺少括号的文本替换”,则预处理器函数的结果可能不是您要返回的结果(贷方:@Deduplicator)。以示例为例:#define Square(x) (x*(x))。由于这个原因,以及其他许多原因,我希望在可能的情况下使用常规C语言进行编码(请注意,在许多情况下,预处理器可能更快,更有用)。希望这可以帮助!