andrew@dunslane.net wrote:
>> Bruce Momjian wrote:
>>>>> Why is this better than:
>>>>>
>>>>> #if _MSC_VER == 1400
>>>>>
>>>>> Surely this will not be true if _MSC_VER is undefined?
>>>> I experienced injustice and the reason of in OSX for it.
>>> What was the problem with OSX? Did it throw a warning of you did an
>>> equality test on an undefined symbol?
>> The following if evaluated to true on osx, although I'm pretty sure that
>> _MSC_VER isn't defined on osx ;-)
>> #if (_MSC_VER < 1300)
>> ...
>> #endif
>>
>> replacing it with
>> #ifdef WIN32
>> #if (_MSC_VER < 1300)
>> ...
>> #endif
>> #endif
>>
>> fixed the problem.
>
> No doubt, but that's quite a different test.
I mainly posted this to show what the offending ifdef in pgadmin3 looked like,
since someone referenced it, not as an argument against "#if _MSC_VER = 1400".
I guess "_MSC_VER < 1300" gets interpreted as "0 < 1300" if _MSC_VER is undefined,
so "_MSC_VER = 1400" would actually work.
But it still suprised me a lot that "_MSC_VER < 1300" evaluated to true if _MSC_VER
is undefined - maybe thats the _real_ reason why some people don't like the tri-state
logic in sql - it's because they get confused when trying to use the c preprocessor ;-)
greetings, Florian Pflug