Assume I have the following three files.
header.h:
int SomeFunction();
inline int a = SomeFunction();
file1.cpp:
#include "header.h"
int b = a + 5;
file2.cpp
#include "header.h"
int c = a + 3;
Am I guaranteed that a
is initialized before both b
and c
, leading to b == a + 5
and c == a + 3
?
My understanding is that within a compilation unit, I do have the guarantee that file scope variables are initialized in a top-to-bottom order. But does that guarantee extend to inline variables since they only exist once, even though they are defined in multiple compilation units.
I understand that I have no guarantees about the relative ordering of `b' and 'c', but that's not an issue since they do not depend on one another.