[libvirt] [PATCH v3 2/2] network: Add code for setting network bandwidth for ethernet interfaces

Eric Blake eblake at redhat.com
Fri Oct 10 12:27:01 UTC 2014


On 10/09/2014 12:21 AM, Anirban Chakraborty wrote:

>> Alas, using a default case means the compiler can no longer tell you
>> about missed cases.  I wrote my example to intentionally spell out ALL
>> cases without a default, in order to ensure the compiler will loudly
>> warn if we add another enum in the future.
> 
> I understood the intention. However, I was aiming for a compact code. If
> we add additional enums for network type, we should be adding those types
> in the above switch provided the new interface type supports bandwidth. I
> do not know if we should prevent future coding error by elaborating the
> current code. Forgive me, as I do not know the coding convention for
> libvirt. If this is the standard practice, I¹ll change the above switch as
> per your wish.

Hmm - we really ought to add a segment to HACKING that mentions the trick.

The thing to remember is that gcc is able to warn for any enum used as a
switch statement where there are only 'case FOO:' labels and no
'default:' label, and where not all the enum values are covered.  So
code-maintenance wise, if you have an enum that might grow a value in
the future, and want to make sure any addition of a new value gets
automatically flagged as to all places of code that need to think about
behavior related to that new value, then using a switch with no default
lets the compiler help you find those places.


-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 539 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20141010/dab3f9f6/attachment-0001.sig>


More information about the libvir-list mailing list