考虑以下代码:
const int a = 0;
const std::string b = "hi";
inline void f_a1()
{
std::cout << a;
}
inline void f_b1()
{
std::cout << b;
}
inline void f_a2()
{
std::cout << &a;
}
inline void f_b2()
{
std::cout << &b;
}
假设此代码存在于将包含在多个翻译单元中的头文件中。
我对内联函数的理解是,它们在每个翻译单元中必须完全相同。
我对上面使用的常量的理解是它们是隐式的,static
即内部链接。这意味着每个翻译单元都有自己的副本。
由于上面的内联函数依赖于这些常量,这些函数中的哪一个(如果有)是正确的?