gpt4 book ai didi

c++ - 在 C++17 中初始化后可以更改内联变量吗?

转载 作者:行者123 更新时间:2023-12-01 18:20:54 26 4
gpt4 key购买 nike

我的场景如下(它在 clang 中有效,但在 gcc 中无效)

liba.hpp:

inline int MY_GLOBAL = 0;

libother.cpp: (dll)

#include "myliba.hpp"

void myFunc() {
//
MYGLOBAL = 28;
}

someexe.cpp:

RunAppThatUsesBothLibAandLibOther();

问题是内联变量在我预期为 28 的地方显示为 0,因为它已经在运行时被修改了。 MSVC 不同意这一点,但 clang 做了我期望的事情。

问题是:在我的场景中可以在运行时修改内联变量吗?(我通过取消内联变量解决了这个问题。)

最佳答案

是的,内联变量可以在初始化后修改。

但是,DLL 在使用 MSVC 的 Windows 上是很奇怪的东西。近似地说,每个 DLL 都被建模为自己的 C++ 程序,具有完全独立的运行时。因此,有一个用于主程序的内联变量拷贝,另一个用于DLL。

关于c++ - 在 C++17 中初始化后可以更改内联变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59195606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com