On 9/27/2013 10:25 AM, "Luís Marques" <[email protected]>" wrote:
- I asked for what OS the current values were, but for now I assumed they were
for Linux only. Does anyone besides Sean Kelly know? Is it reasonable to assert
for the other systems? If not, what's the alternative? Let the compilation fail
and people wonder why LC_* are not defined?

The idea is:

version (linux)
{
     ...
}
else version (Windows)
{
     ...
}
else version (OSX)
{
    ...
}
else
{
    static assert(0);
}

I.e. the values should be POSITIVELY set for each system, NOT defaulted. The advantages are:

1. when you port to a new system, you get compile time errors for every place where you need to check/fix the values

2. if you want to fix the values for one system, you don't muck up the values for any other system


- Why, oh why, is "linux" the only OS version() identifier that is not
capitalized?

Because "linux" is what gcc predefines for Linux. (gcc also sets __gnu_linux, __linux__, and __linux, none of which are capitalized. It's the Linux way, not some nefarious plot of mine to disparage it.)

Reply via email to