私のシナリオは以下です(それは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は私が期待することを行います。
問題は、私のシナリオでは、実行時にインライン変数を変更できるかどうかです。(変数をインライン展開することで問題を解決しました。)