使用#define声明函数

时间:2018-07-09 10:48:48

标签: c++ function

我遇到了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的代码)中显示的函数中,还有一个技术名称。

1 个答案:

答案 0 :(得分:1)

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

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