我有一个头文件,其中包含大量(30+)的内联函数。
为了避免读者滚动或搜索内联函数的定义(实现),我想要一个“前向声明”部分,该部分陈述了带有注释的函数声明。 这个部分可以让读者找到如何使用函数或查找函数,而不必向下滚动到实现部分。
此外,我希望读者习惯于使用函数,而不必看到它们的实现。
一个独立函数的前向声明语法是什么?
{适用于C99和C ++}
顺便说一句,我正在使用设置为使用C99的IAR Workbench C编译器。
我有一个头文件,其中包含大量(30+)的内联函数。
为了避免读者滚动或搜索内联函数的定义(实现),我想要一个“前向声明”部分,该部分陈述了带有注释的函数声明。 这个部分可以让读者找到如何使用函数或查找函数,而不必向下滚动到实现部分。
此外,我希望读者习惯于使用函数,而不必看到它们的实现。
一个独立函数的前向声明语法是什么?
{适用于C99和C ++}
顺便说一句,我正在使用设置为使用C99的IAR Workbench C编译器。
与非内联函数没有区别:
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>
。
您不需要“前向声明”它(这个术语通常只适用于类型,因为我们通常在第一次声明它们的地方就定义了它们)。
只需像平常一样声明它:
#include <iostream>
void foo(); // Declaration
inline void foo() { // Defining declaration
std::cout << "!";
}
// ---------------------------------------------
int main() {
foo(); // Output: foo()
}
27.3
的标题与您(以及赞同您不正确评论的人)不符。为了节省您查找的时间,它称为“前向声明”,并列出了iostreams
中的前向声明。希望这可以帮助您。 - Lightness Races in Orbit9.1/2
: "[..] 仅由_class-key identifier;_组成的声明是当前作用域中名称的重新声明或标识符作为类名称的前向声明。它将类名引入当前作用域。[..]"这是规范化的。 - Lightness Races in Orbit// declaration
inline void foo(void);
// implementation
inline void foo(void) {
print("foo");
}