【发布时间】:2016-10-03 12:01:03
【问题描述】:
当我使用我的类实现之一在现有 cpp 中添加此代码时
#include <iostream>
struct TestStruct{
TestStruct(int i)
{
std::cerr << i << std::endl;
x = i;
}
int x;
};
TestStruct t(8);
它在main 执行之前打印 8。
但是当我创建新的空文件 test.cpp 并将相同的代码放入其中时,没有打印任何内容。我检查了这个 cpp 是否已编译和链接。所有 cpp 文件编译为静态库,然后将此库与 main.o 链接到可执行文件中。我使用 g++ 5.3 的唯一选项是 -std=C++14。
为什么在第二种情况下会错过全局变量初始化?
【问题讨论】:
-
请修正您的打字错误,您的案例 1 和案例 2 有什么区别?
-
cpp中的第一种情况与其他大代码和新文件中的第二种情况