Deutsch   English   Français   Italiano  
<vsr0ml$1to9m$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Richard Harnden <richard.nospam@gmail.invalid>
Newsgroups: comp.lang.c
Subject: enums and switch vs function calls
Date: Sat, 5 Apr 2025 11:29:41 +0100
Organization: A noiseless patient Spider
Lines: 26
Message-ID: <vsr0ml$1to9m$1@dont-email.me>
Reply-To: nospam.harnden@invalid.com
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sat, 05 Apr 2025 12:29:42 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="ea52f8b2e3a437e493b2833fc00662c8";
	logging-data="2023734"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/tPo8FlMHN0UbStXI4n+iVZaYCon0GF/I="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:Vaw8YeQ4R2A8tvtDxxl2OCjX4KA=
Content-Language: en-GB
Bytes: 1490

If I have:

enum colour {RED, GREEN, BLUE}

int colour_to_hex(enum colour colour)
{
     switch (colour)
     {
         RED: return 0xff0000;
         GREEN: return 0x00ff00;
         // BLUE: return 0x0000ff;
     }

     ...
}

.... then the compiler will warn me that I've missed a case in the switch 
statement.  Which is good and very helpful.

But if I do:

int hex = colour_to_hex(10);

.... then the compiler doesn't complain that 10 is not in the enum.

Why? Surely the compiler can tell.