It might be that VS and gcc is more loose in their c++ standard implementation. But the problem we have is the following:
1. The code compiled fine with clang before the commit
2. There are other variables that are defined just like O_WESTWALL & co is. However those doesn't break clang it seems
3. If we just accept a quick fix for this without knowing why and what went wrong then there will probably be breakage further down the line.
I installed clang 3.2 my self to see if I could compile it. It doesn't work here either. But I get a better error message:
openxcom-TileEngine.o: In function `pair':
/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include/g++-v4/bits/stl_pair.h:105: undefined reference to `OpenXcom::MapData::O_WESTWALL'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include/g++-v4/bits/stl_pair.h:105: undefined reference to `OpenXcom::MapData::O_NORTHWALL'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
If we take a look at what changed in that commit
https://github.com/SupSuper/OpenXcom/commit/6024bedf3cca3855a5b00b315b5a24d8530964e9 we can see that it is now using "std::pair" to store the O_* stuff. And it wasn't using a pair datatype before. So that is probably what broke it and not the definition of the O_* ints.
So now the question is why clang doesn't like pairs in this situation