c++ 内联函数的前向声明

fquxozlt  于 2023-07-01  发布在  其他
关注(0)|答案(3)|浏览(170)

我有一个头文件,它将包含大量(30+)内联函数。
我不想让读者滚动或搜索内联函数的定义(实现),我希望有一个 forward declaration 部分,用注解描述函数声明。本节将允许读者了解如何使用函数或查找函数,而不必向下滚动到实现。
另外,我希望读者能够养成使用函数的习惯,而不必看到它们的实现。
独立函数的前向声明的语法是什么?

  • 这适用于C99和C++*

仅供参考,我使用的IAR工作台C编译器设置为使用C99。

hc8w905p

hc8w905p1#

与非内联函数没有区别:

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>

hvvq6cgz

hvvq6cgz2#

你不需要“forward declare”它(这个术语通常只适用于类型,因为我们通常在第一次声明它们的地方定义它们)。
就像平常一样声明它:

#include <iostream>

void foo();            // Declaration

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

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

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

Live demo.

aiqt4smr

aiqt4smr3#

要同时使用C++和C99,也要将声明内联,如下所示:

// declaration
inline void foo(void);

// implementation 
inline void foo(void) {
    print("foo");
}

相关问题