我有以下内容:
val inputFactory = XMLInputFactory.newFactory()
inputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, false)
XmlMapper(inputFactory).apply {
registerModule(KotlinModule())
}
输出为//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;
}
(MSVC和GCC),即内联22
a.cpp
函数而不是f
。在这种情况下选择b.cpp
函数的条件是什么?
答案 0 :(得分:7)
您的代码格式错误,无需诊断。所有内联函数定义在所有翻译单元中都必须相同。
由于您不执行此操作,因此代码格式错误,但是可以编译,也无需引起任何警告或错误。
答案 1 :(得分:2)
您在此处破坏了ODR( O ne D 定义 R ule)并且程序格式错误,不需要进行诊断。
每个内联定义应该相同。