7

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

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

4

1 回答 1

10
#ifdef __cplusplus
#define restrict
#endif

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

或者,正如Arne Mertz所建议的,更好的是,拥有

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

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

于 2012-11-26T14:25:24.610 回答