用C ++编译时删除`restrict`关键字的宏

时间:2012-11-26 14:23:46

标签: c++ macros c-preprocessor

我需要在C ++项目中包含一些最初用 C 编写的标题。在头文件中,使用了restrict keyword,这导致了C ++的语法错误。

我正在寻找一个预处理器宏来检查我是否正在使用C ++编译器进行编译,并在这种情况下删除restrict关键字。

1 个答案:

答案 0 :(得分:10)

#ifdef __cplusplus
#define restrict
#endif

应该这样做。 restrict不是C ++中的关键字,因此#define将其置于空中是没有问题的。

或者,正如Arne Mertz建议的那样,更好的是

extern "C" {
#define restrict
// include C headers here
#undef restrict
}

在C ++源代码中包含C头文件。