c++内联函数原型
C++ Inline Function Prototypes
我遇到了一个头文件,其中包括各种内联和const的函数原型声明:
inline bool Foo1() const;
inline bool Foo2() const;
inline bool Foo3() const;
...
我理解内联关键字允许编译器(潜在地)在调用函数时扩展函数,但为什么不包括函数体呢?
如果定义包含在头文件中,对我来说会更有意义:
inline bool Foo1() const { return m_Foo1; };
inline bool Foo2() const { return m_Foo2; };
inline bool Foo3() const { return m_Foo3; };
...
在原型上使用内联的意义是什么?
这可能只是一个错误,但最可能的是程序员想使函数内联,但不想让这些函数的实现使文件的那部分混乱。在编写"仅标头"代码时,这是一种相当常见的模式。您有一个没有(或很少)实现的普通头文件和另一个包含的文件,但其行为类似于实现文件并包含所有实现。
它只是允许一个类接口紧凑地显示。
函数定义稍后存在于编译单元中(在调用它们之前,如果调用,则)
来自Dr. Dobb's:
函数定义或函数原型都可以内联声明。如果函数原型是内联声明的,如果函数被调用
,则该函数的单独定义必须出现在模块的其他地方。
原因有很多。
- 你需要空函数声明来解决一个函数调用另一个函数的依赖问题。
- 由于风格原因。
唯一的约束是函数定义必须包含在使用内联函数的每个编译单元中。否则,内联函数在声明和定义方式上与普通函数完全相同。
因为函数可能在目标文件中,开发人员不希望任何人看到源代码。
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 具有enable_if外部类原型的模板类构造函数定义
- 函数如何通知用户它基于函数原型抛出异常?
- 在函数中拥有函数原型的目的是什么?
- 什么..(省略号)作为函数原型中唯一的函数参数,C++?
- 是否可以使用 libclang python 解析 cpp 文件中没有标头的函数原型
- 有没有办法在C++编译时更改函数原型?
- 省略函数原型中的返回类型
- 如何使用 "using" 关键字定义函数原型/签名
- 未定义原型函数?
- SFINAE :删除具有相同原型的函数
- 函数原型未初始化的局部变量
- 如何创建函数原型命名空间
- 如何使用这个原型函数char*encrypt(char*pEncryptedText,const char*pText)
- C++:警告:C4930:未调用原型函数(是否为变量定义?)
- 编写原型函数(c++)
- 我有在c++编程中创建和执行原型函数的麻烦
- 需要为原型函数创建一个单独的cpp文件
- 用Emacs从.h中自动插入原型函数
- 如何修复错误 C4930:"AMyStaticMeshActor a(void)":未调用原型函数(是否打算使用变量定义?