如本文档所述:
Is there still a use for inline?
那么,内联关键字的实际目的是什么?很简单: 标记为内联的函数可以在多个翻译中定义 单元,而不会违反一个定义规则(ODR)。想象这些 两个文件:
但是以这种方式使用内联有一个问题,如本文档所述:
https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_71/rzarg/inline_linkage.htm
重新定义一个具有相同名称但不同的内联函数 功能主体是非法的;但是,编译器不会将此标记为 错误,但只是为定义的版本生成一个函数主体 在编译命令行中输入的第一个文件中,以及 丢弃其他人。
有没有一种方法可以在头文件中定义一个函数并在多次转换中使用它,并且如果我不小心用两个不同的函数体对函数进行了两次重定义,则编译器会生成错误? (假设所有函数都在同一个命名空间内)
是否有计划在其他版本的C ++中使用此类关键字
我已经看到设置为重复的答案,但是该问题并未涉及IBM报告的使用内联函数的问题。 重复项解释说,现在,inline用于防止多重翻译,这也是我在问题中提到的,但是没有提及它所产生的问题。