Mein Szenario ist das folgende (es hat in clang funktioniert, aber nicht in gcc)
liba.hpp:
inline int MY_GLOBAL = 0;
libother.cpp: (dll)
#include "myliba.hpp"
void myFunc() {
//
MYGLOBAL = 28;
}
someexe.cpp:
RunAppThatUsesBothLibAandLibOther();
Das Problem ist, dass die Inline-Variable an Stellen, an denen ich 28 erwartet hatte, 0 anzeigt, da sie zur Laufzeit bereits geändert wurde. MSVC ist damit nicht einverstanden, aber Clang macht das, was ich erwarten würde.
Die Frage ist: Können Inline-Variablen in meinem Szenario zur Laufzeit geändert werden? (Ich habe das Problem durch De-Inlining der Variablen gelöst.)
inline
. Sie müssten auch sicherstellen, dass sie aus einer DLL exportiert und von dort an allen anderen Orten importiert wurden.