为什么在Doom源代码中有#define ID_INLINE内联定义?

时间:2014-01-05 13:45:51

标签: c++ macros inline c-preprocessor

在Doom 3源代码中,使用ID_INLINE宏而不是内联,它被声明为#define ID_INLINE inline。是什么原因使用这个宏而不是简单的内联?

2 个答案:

答案 0 :(得分:3)

出于同样的原因,许多其他软件包使用“内联宏”。它有两个目的:

  1. 它为程序员提供了一个“关闭所有内联”的简单位置(这在调试时非常有用) - 你可以通过执行#undef ID_INLINE后跟{{1}来“按文件”执行此操作} - 或更改整个宏以影响整个项目。
  2. 某些(旧)编译器不支持标准#define ID_INLINE关键字,或者您可能需要使用特殊魔术来说服编译器内联函数。因此,使用“内联宏”允许对整个项目进行更改(至少如果程序员遵循编码标准)。
  3. 对于现代编译器,前者肯定是重点。

答案 1 :(得分:0)

唯一的原因是有一种方法可以将这个宏重新定义如下,可能是出于调试目的:

#define ID_INLINE