Ger*_*ago 11 c++ dll clang visual-c++ c++17
我的场景如下(它在 clang 中有效,但在 gcc 中无效)
liba.hpp:
inline int MY_GLOBAL = 0;
Run Code Online (Sandbox Code Playgroud)
libother.cpp: (dll)
#include "myliba.hpp"
void myFunc() {
//
MYGLOBAL = 28;
}
Run Code Online (Sandbox Code Playgroud)
一些exe.cpp:
RunAppThatUsesBothLibAandLibOther();
Run Code Online (Sandbox Code Playgroud)
问题是内联变量在我预期为 28 的地方显示为 0,因为它在运行时已被修改。MSVC 不同意这一点,但 clang 做了我期望的事情。
问题是:在我的场景中可以在运行时修改内联变量吗?(我通过反内联变量解决了这个问题。)
Ant*_*ams 10
是的,inline
变量可以在初始化后修改。
但是,DLL 在带有 MSVC 的 Windows 上是奇怪的东西。近似地,每个 DLL 都被建模为它自己的 C++ 程序,具有完全独立的运行时。因此,inline
主程序有一个变量副本,DLL有另一个副本。
归档时间: |
|
查看次数: |
138 次 |
最近记录: |