了解类构造函数中的"内联"C++?
Understanding of "inline" in C++ class constructor?
我在 boost 库中读取了类 address_v4 的源代码,有几个构造函数用 BOOST_ASIO_DECL 声明(定义为内联(
/// Construct an address from raw bytes.
BOOST_ASIO_DECL explicit address_v4(const bytes_type& bytes);
/// Construct an address from a unsigned long in host byte order.
BOOST_ASIO_DECL explicit address_v4(unsigned long addr);
(从这里 http://www.boost.org/doc/libs/1_64_0/boost/asio/ip/address_v4.hpp(
# define BOOST_ASIO_DECL inline
(从这里 http://www.boost.org/doc/libs/1_64_0/boost/asio/detail/config.hpp(
那么,为 c++ 构造函数指定"内联"的目的是什么?它与函数的含义相同还是具有不同的含义?
它具有完全相同的含义(正如一些程序员指出的那样,ctor与其他任何函数一样(,但是鉴于任何编译器(我能想到(都会很乐意忽略您的建议(决定是否需要内联或不使用他的所有知识(,那么它必须有另一种用途......
事实上,它可以在头文件中定义一个函数(或ctor(,而不会因为一个定义规则而引发链接器的错误。
请注意,当函数没有主体时,它会打开另一种场景:在多个翻译单元中定义函数。在这种情况下,每个实现都必须相同(AFAIK,如果我错了,请纠正我(或者它是 UB。
简而言之:在头文件中定义一个函数并在多个翻译单元中使用它:链接器错误。将其标记为内联并且错误消失(这并不意味着函数真的是内联的(。
相关文章:
- 内联映射初始化的动态atexit析构函数崩溃
- 不同翻译单元中不可重载的非内联函数定义
- 头文件、宏和内联函数c++
- 内联函数中具有内部链接的全局变量
- 内联程序集printf将整数解释为地址
- 内联如何影响模块接口中的成员函数
- 检测 COFF 对象文件中C++内联符号
- 在C++中使用内联方法时出现未定义的符号错误
- 为什么返回类型的'const'限定符对标有 __forceinline/内联的函数没有影响?
- 为什么未命名的结构内联变量在每个翻译单元中没有相同的地址?
- 使用英特尔内联函数将打包的 8 位整数乘以浮点数向量
- 同时具有"外部"和"内联"说明符的变量
- 如何将内联匿名函数分配给C++函数指针
- GCC 会优化内联访问器吗?
- COUT 无法提供输出可能是由于内联组装
- 在什么情况下,我想在 C/C++ 代码中使用内联汇编代码
- 内联静态数据的初始化
- C++内联运算符重载中,请参阅当前对象
- 使用内联函数 c++ 的未定义引用
- 单行函数模板 c++ 的内联性保证