内联函数的前向声明

Tho*_*ews 18 c c++ inline c99 forward-declaration

我有一个头文件,将包含大量(30+)内联函数.

我没有让读者滚动或搜索内联函数的定义(实现),而是希望有一个前向声明部分,它声明函数声明以及描述函数的注释.本节将允许读者了解如何使用函数或查找函数,而无需向下滚动到实现.

此外,我希望读者养成使用函数的习惯,而不必看到他们的实现.

独立函数的前向声明的语法是什么?

{这适用于C99和C++}

仅供参考,我使用IAR Workbench C编译器设置使用C99.

ild*_*arn 22

与非内联函数没有什么不同:

void func();       // "forward" declaration

// ...

inline void func() // definition
{
    // impl
}
Run Code Online (Sandbox Code Playgroud)

通常,用于"隐藏"库使用者定义的模式是将声明放在一个header(a.h)中,将定义放在第二个header(a_def.h)中,然后将前者#include放在后者中(为简洁省略包含保护):

// a.h
void func();
#include "a_def.h"

// a_def.h
inline void func()
{
    // impl
}
Run Code Online (Sandbox Code Playgroud)

图书馆消费者很简单#include <a.h>.

  • 这对于 C99 来说是不正确的。将非内联声明与内联定义一起使用将在包含标头的每个翻译单元中发出一个外部可见符号,导致链接失败并出现重复符号错误。 (2认同)
  • @a3f :注意到了;这个答案是针对 C++ 的。(这就是为什么在一个问题上标记多种语言是愚蠢的。) (2认同)