Article View: pl.comp.lang.c
Article #309557Re: Pewne ostrzeżenie podczas kompilacji ...
From: M.M.
Date: Wed, 03 Jan 2018 14:02
Date: Wed, 03 Jan 2018 14:02
44 lines
3147 bytes
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-mailReferences:
<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