C++:extern和inline函数

Suu*_*aku 5 c c++ inline

我有几个用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).

有更好的解决方案吗?

Sim*_*mon 2

如果我理解正确的话,我会这样做:


 #ifdef __cplusplus
 #define D_INLINE static
 extern "C" {
 #else
 #define D_INLINE inline
 #endif
Run Code Online (Sandbox Code Playgroud)

并将 D_INLINE 用于我认为需要内联的函数。正如delnan所说,编译器无论如何都会对其进行优化,而inline关键字只是向编译器暗示程序员认为编译器应该内联该函数。它不会强制编译器内联该函数。

  • 您将在各处遇到多个定义错误。而且逻辑是落后的:C++ 支持“inline”关键字,而 C89/C90 不支持。 (4认同)