【发布时间】:2023-04-01 14:29:01
【问题描述】:
考虑以下示例:
// 头文件props.h
#pragma once
#include <vector>
extern std::vector<int> prop;
struct addToVec
{
addToVec(int a)
{
prop.push_back(a);
}
};
// cpp文件props.cpp
#include "props.h"
std::vector<int> prop;
addToVec b(10);
// main.cpp
#include <iostream>
#include "props.h"
addToVec a2(14);
int main(int argc, char** argv)
{
std::cout << prop.size();
return 0;
}
预期输出为 2。但实际输出为 1。
这给出了 gcc 编译器的预期结果 (2)(不确定版本)。我正在使用 Visual Studio Professional 2013 版本 12 更新 5。这是错误还是预期结果?
元素添加到向量中的顺序与我无关。我唯一担心的是向量中只添加了一个元素(而不是 2 个)。
【问题讨论】:
-
元素添加到向量的顺序与我无关。我唯一担心的是向量中只添加了一个元素(而不是 2 个)。
-
重要的顺序是
prop是在addToVec的实例之前还是之后创建的。
标签: c++ global-variables extern