【问题标题】:Extern variables aren't initialized外部变量未初始化
【发布时间】:2022-06-15 08:46:31
【问题描述】:

在我正在做的一个项目中,我使用“extern”来使用一些全局变量,以便所有文件都可以访问它们。

以下是我的情况:

main.cpp:

#include <iostream>
#include "test.h"


std::string val2 = val;



int main()
{
    std::cout << val2 << std::endl;
}

test.h:

#pragma once
#include <string>

extern std::string val;

test.cpp:

#include "test.h"

std::string val = "Hello World";

我期望得到的输出是“Hello World”,但它只会打印一个新行。

如果我使用内置类型(如 int)而不是 std::string,它将按预期工作。

据我了解,当我们尝试将其分配给val2 时,val 尚未初始化,因此我们最终什么都不复制,然后(可能)val 被初始化为该值Hello World,但由于我们正在打印 val2,我们只得到新行。

所以我的问题是,如何强制 val 先初始化。

如果这不可能,我如何制作全局变量(可以在多个文件之间使用)

注意:这些不是我的真实文件,但我检查过,问题也出现在这里,我认为这算作一个最小代码示例(或任何它是叫)

【问题讨论】:

  • 现在无法获得链接,但是:静态初始化订单惨败。

标签: c++ initialization global extern


猜你喜欢
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
相关资源
最近更新 更多