这是一个包含内联变量的头文件:
// inline.hpp
#pragma once
#include <iostream>
struct Test {
~Test() { std::cout << "deleted" << std::endl; }
};
inline const Test test;
...包含在两个.cpp
文件中:
// usage.cpp
#include "inline.hpp"
// main.cpp
#include "inline.hpp"
auto main() -> int { return 0; }
这个程序打印了两次“deleted”,这是出乎意料的。我认为每个内联变量只有一个实例,所以我期待只有一个“已删除”。
这是编译器的错误吗?还是我做错了什么?
代码用VS2017编译。