内联函数选择条件



>我有以下内容:

//a.cpp
inline int f(int x) { return x; }
int g(int x) { return f(x); }
//b.cpp
#include <iostream>
inline int f(int x) { return x + 1; }
extern int g(int);
int main() {
    std::cout << g(2) << f(2) << std::endl;
}

输出是22的(MSVC 和 GCC(,也就是说,a.cpp f函数是内联的,而不是b.cpp函数。在这种情况下,选择f功能的标准是什么?

代码格式不正确,无需诊断。 所有内联函数定义在所有翻译单元中都需要相同。

由于您不这样做,因此代码格式不正确,但允许编译,并且不需要引起任何类型的警告或错误。

您在这里破坏了 ODR (One Definition Rule(,并且程序格式不正确,无需诊断。

每个内联定义应相同。

相关内容

  • 没有找到相关文章

最新更新