🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #309557

Re: Pewne ostrzeżenie podczas kompilacji ...

#309557
From: M.M.
Date: Wed, 03 Jan 2018 14:02
44 lines
3147 bytes
On Tuesday, January 2, 2018 at 11:08:07 PM UTC+1, Wojciech Muła wrote:
> On Tuesday, January 2, 2018 at 2:17:11 PM UTC+1, Maciek wrote:
> > Cześć. Mam typ enum w którym jest kilka wartości. Następnie testuje coś za pomocą instrukcji switch / case.
> > Czy jeśli nie testuje wszystkich możliwych wartości które są w tym typie, a tylko te które w danym momencie mnie interesują, to czy jest powód do ostrzeżenia:
> > 
> > /Users/Maciek0/Projekty/books/books/window.cpp:223:11: Enumeration values 'b_n', 'ean', and 'isbn' not handled in switch
> 
> To może oznaczać, że Twój typ enum obejmuje za wiele przypadków.
> Powinieneś mieć typ, który zawiera tylko takie wartości, jakie Cię
> interesują w danym miejscu programu. Załatwianie wszystkiego jednym
> enumem i używanie defaultów to proszenie się o kłopoty.

Ja bardzo często w enum mam 'dodatkowe' pole na końcu typu. Np.:

enum Enum {
 field_0,
 field_1,
 field_2,
 .......
 filed_N,
 size_of_enum,
};

W niektórych przypadkach, po dodaniu pola field_N+1, wszystkie algorytmy
działają bez przepisywania, bo np. mam gdzieś tablicę:

QVector<...> table( size_of_enum , init_value );

Niestety w swich-case z reguły nigdy nie wykorzystuję pola size_of_enum i
kompilator krzyczy...


 

> Niestety, typy wyliczeniowe są w C++ koślawe (z mikro-poprawką na
> enum class), 
Chyba nie używałem nigdy enum class, może pora się zapoznać. 


> więc modelowanie za ich pomocą jest męczące.
Ale i tak często ułatwia rozwój aplikacji i zwiększa przejrzystość. A to 
co powyżej opisałem z size_of_enum na końcu, jeszcze bardziej pomaga.

Pozdrawiam
Technical Details
Message-ID: <730b0e72-195b-43b7-aeed-60776845daff@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer03.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!m31no6124751qtf.0!news-out.google.com!t48ni2466qtc.1!nntp.google.com!m31no6124746qtf.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <2ffc816a-0dae-4f63-a1ee-7a8b5f98ca94@googlegroups.com> <328c7d69-5f41-4564-8bd1-5a7c041c3db7@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 10.200.33.247 with SMTP id 52mr1000263qtz.50.1514988138993;        Wed, 03 Jan 2018 06:02:18 -0800 (PST)
X-Received: by 10.31.94.215 with SMTP id s206mr163722vkb.1.1514988138864; Wed, 03 Jan 2018 06:02:18 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer03.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!m31no6124751qtf.0!news-out.google.com!t48ni2466qtc.1!nntp.google.com!m31no6124746qtf.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Wed, 3 Jan 2018 06:02:18 -0800 (PST)
In-Reply-To: <328c7d69-5f41-4564-8bd1-5a7c041c3db7@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=178.36.205.47; posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
NNTP-Posting-Host: 178.36.205.47
References: <2ffc816a-0dae-4f63-a1ee-7a8b5f98ca94@googlegroups.com> <328c7d69-5f41-4564-8bd1-5a7c041c3db7@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <730b0e72-195b-43b7-aeed-60776845daff@googlegroups.com>
Subject: Re: Pewne ostrzeżenie podczas kompilacji ...
From: "M.M." <mmarszik@gmail.com>
Injection-Date: Wed, 03 Jan 2018 14:02:18 +0000
X-Received-Bytes: 3247
X-Received-Body-CRC: 3960755610
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit