这是一个包含内联变量的头文件:
// 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; }
此程序打印两次“已删除”,这是意外的。 我以为每个内联变量只有一个实例,所以我期望只有一个“已删除”。
这是编译器的错误吗?还是我做错了什么?
该代码是使用VS2017编译的。