delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/09/17/03:24:50

From: Martin Ambuhl <mambuhl AT earthlink DOT net>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: enum - Why does true == false?
Date: Fri, 17 Sep 1999 00:11:53 -0400
References: <HbrhNzeq9qsy9UvyzT4fDeX4Lrnh AT 4ax DOT com>
X-Posted-Path-Was: not-for-mail
X-Accept-Language: en
X-ELN-Date: 17 Sep 1999 04:09:54 GMT
X-ELN-Insert-Date: Thu Sep 16 21:15:28 1999
Organization: Nocturnal Aviation
Lines: 65
Mime-Version: 1.0
NNTP-Posting-Host: dialup-209.246.88.220.newyork2.level3.net
Message-ID: <37E1BF89.907E43B2@earthlink.net>
X-Mailer: Mozilla 4.61 [en] (Win95; U)
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com


Carl Hover wrote:
> 
> Why does this program print "true == false" when compiled with djgpp
> v2.01, and "true != false" when compiled with Borland C++ 3.1? Are
> enum constants ill-defined during preprocessing?

Try replacing your code with the following and see if it gives you a
clue:
#include <stdio.h>

int main(void)
{
    enum {
        false, true
    };
#if defined(true)
    printf("true is defined\n");
#elif !defined(true)
    printf("true is not defined\n");
#endif
    
#if defined(false)
    printf("false is defined\n");
#elif !defined(false)
    printf("false is not defined\n");
#endif

#if true == false
    printf("true == false\n");
#endif

#if true != false
    printf("true != false\n");
#endif

    return 0;
}


> 
> #include <stdio.h>
> 
> int main(void)
> {
>   enum {false, true};
> 
>   #if true == false
>     printf("true == false\n");
>   #endif
> 
>   #if true != false
>     printf("true != false\n");
>   #endif
> 
>   return 0;
> }

-- 
Martin Ambuhl	mambuhl AT earthlink DOT net

__________________________________________________________
Fight spam now!
Get your free anti-spam service: http://www.brightmail.com

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019