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

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

最佳答案

#ifdef __cplusplus
#define restrict
#endif

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

或者,正如 Arne Mertz 建议的那样,更好的是,有
extern "C" {
#define restrict
// include C headers here
#undef restrict
}

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

关于c++ - 使用 C++ 编译时删除 `restrict` 关键字的宏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13566807/

10-09 06:25