我有一个头文件,它将包含大量(30+)内联函数。我不想让读者滚动或搜索内联函数的定义(实现),我希望有一个 forward declaration 部分,用注解描述函数声明。本节将允许读者了解如何使用函数或查找函数,而不必向下滚动到实现。另外,我希望读者能够养成使用函数的习惯,而不必看到它们的实现。独立函数的前向声明的语法是什么?
仅供参考,我使用的IAR工作台C编译器设置为使用C99。
hc8w905p1#
与非内联函数没有区别:
void func(); // "forward" declaration // ... inline void func() // definition { // impl }
通常,用于向库消费者“隐藏”定义的模式是将声明放在一个头文件(a.h)中,将定义放在第二个头文件(a_def.h)中,然后将前者的#include放在后者(为简洁起见,省略了包含保护):
a.h
a_def.h
#include
// a.h void func(); #include "a_def.h"
// a_def.h inline void func() { // impl }
库消费者将简单地使用#include <a.h>。
#include <a.h>
hvvq6cgz2#
你不需要“forward declare”它(这个术语通常只适用于类型,因为我们通常在第一次声明它们的地方定义它们)。就像平常一样声明它:
#include <iostream> void foo(); // Declaration inline void foo() { // Defining declaration std::cout << "!"; } // --------------------------------------------- int main() { foo(); // Output: foo() }
aiqt4smr3#
要同时使用C++和C99,也要将声明内联,如下所示:
// declaration inline void foo(void); // implementation inline void foo(void) { print("foo"); }
3条答案
按热度按时间hc8w905p1#
与非内联函数没有区别:
通常,用于向库消费者“隐藏”定义的模式是将声明放在一个头文件(
a.h
)中,将定义放在第二个头文件(a_def.h
)中,然后将前者的#include
放在后者(为简洁起见,省略了包含保护):库消费者将简单地使用
#include <a.h>
。hvvq6cgz2#
你不需要“forward declare”它(这个术语通常只适用于类型,因为我们通常在第一次声明它们的地方定义它们)。
就像平常一样声明它:
Live demo.
aiqt4smr3#
要同时使用C++和C99,也要将声明内联,如下所示: