Compiler means changing source code to binary.
On windows:
array_counter.h
extern char* dummy_allocation;
extern char** dummy_ary;
extern int dummy_ary_index;
array_counter.cpp
char* dummy_allocation = nullptr;
char** dummy_ary = nullptr;
int dummy_ary_index = 0;
the above is usage but only on mingw which is one of compilers.
And it doesn't allow the below and On Linux gcc does it:
array_counter.h
char* dummy_allocation = nullptr;
char** dummy_ary = nullptr;
int dummy_ary_index = 0;
array_counter.cpp
extern char* dummy_allocation;
extern char** dummy_ary;
extern int dummy_ary_index;
We could only say that which is:
1. mingw futueard not windows.
2. gcc on Linux futuread not windows.