当编写头库时(例如Boost http://www.boost.org/),是否可以定义自由浮动(非方法)函数,而不会(1)使生成的二进制文件膨胀并且(2)引发“未使用”警告?
当我在多个源文件包含的标头中定义一个函数,而这些源文件又链接到同一个二进制文件时,链接器会抱怨重新定义。解决这个问题的一种方法是使函数静态,但这会在每个翻译单元中重现代码(顺便说一句,链接器可以安全地取消复制这些代码吗?)。此外,这会触发编译器关于该函数未被使用的警告。
我试图在 Boost 中寻找自由浮动函数的示例,但我找不到。技巧是将所有内容都包含在类(或模板)中吗?
如果您确实想定义该函数(而不是声明它),则需要使用inline
以防止链接器错误。
否则,您可以在头文件中声明该函数并在源文件中单独提供其实现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)