内联函数的前向声明

时间:2012-02-16 19:07:04

标签: c++ c inline c99 forward-declaration

我有一个包含大量(30+)内联函数的头文件。

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

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

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

{这适用于C99和C ++}

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

2 个答案:

答案 0 :(得分:22)

与非内联函数没有区别:

void func();       // "forward" declaration

// ...

inline void func() // definition
{
    // impl
}

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

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

// a_def.h
inline void func()
{
    // impl
}

图书馆消费者只需#include <a.h>

答案 1 :(得分:3)

你不需要“转发声明”它(一个通常只适用于类型的术语,因为我们通常将它们定义在我们首先声明它们的相同位置)。

就像正常一样声明它:

#include <iostream>

void foo();            // Declaration

inline void foo() {    // Defining declaration
   std::cout << "!";
}

// ---------------------------------------------

int main() {
   foo();              // Output: foo()
}

Live demo.