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
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list