我有几个用C语言编写的文件,我希望它们与C++兼容,所以对于我使用的C头文件;
#ifdef __cplusplus
extern "C" {
#endif
Run Code Online (Sandbox Code Playgroud)
在文件的开头,当然
#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)
...在末尾.但它似乎会产生'inline'关键字的问题.我的解决方案是简单地删除C++的inline关键字,但我想它可能会对C++程序产生不良影响(这些函数被称为gazillions of times).
有更好的解决方案吗?
如果我理解正确的话,我会这样做:
#ifdef __cplusplus
#define D_INLINE static
extern "C" {
#else
#define D_INLINE inline
#endif
Run Code Online (Sandbox Code Playgroud)
并将 D_INLINE 用于我认为需要内联的函数。正如delnan所说,编译器无论如何都会对其进行优化,而inline关键字只是向编译器暗示程序员认为编译器应该内联该函数。它不会强制编译器内联该函数。