MSC __STDC__ strange value
    Dion Hollenbeck 
    hollen at eta.megatek.uucp
       
    Wed Dec  6 02:41:34 AEST 1989
    
    
  
>From article <223 at bohra.cpg.oz>, by ejp at bohra.cpg.oz (Esmond Pitt):
> For some strange reason, the MSC 5.1 compiler defines __STDC__ as 0, so
> 
> #if __STDC__
> ...
> #endif
This means:  Take the DEFINED macro __STDC__ and test its value and
		return TRUE if non-zero and FALSE if zero
> 
> yields a different result from
> 
> #ifdef __STDC__
> ...
> #endif
> 
> Why?
This means:	Look to see if the macro __STDC__ is defined. If
		it is defined, return TRUE and if it is not defined
		return FALSE.
The difference is the basic definition of #if and #ifdef.  #if
tests the value of a defined macro and #ifdef tests for its
existence.  In all code I have seen (I have lots of source to
packages which I use) written to support several different compilers,
the test always made is the #ifdef test.
By the way,
	#define __STDC__	/* evaluates  __STDC__ = 0  */
while
	#define __STDC__  1	/* evaluates  __STDC__ = 1 */
You will only get the #if test to be true if the macro IS DEFINED
and IS DEFINED TO BE NON-ZERO.
Hope this helps.
	Dion Hollenbeck             (619) 455-5590 x2814
	Megatek Corporation, 9645 Scranton Road, San Diego, CA  92121
        uunet!megatek!hollen       or  hollen at megatek.uucp
    
    
More information about the Comp.std.c
mailing list