Manifest constants: why enum instead of invariant?

Bruno Medeiros brunodomedeiros+spam at com.gmail
Sun Apr 27 11:39:04 PDT 2008


Picking up and idea which had crossed my mind, and that Oskar Linde 
briefly mentioned on the const debacle thread 
(news://news.digitalmars.com:119/fsirc9$2hll$1@digitalmars.com):

Why do we need enum instead of invariant to declare manifest constants?

(I have the feeling that this has been discussed before in the manifest 
constants debate but I can't remember it nor find it)

An invariant variable offers all the power than enum does for manifest 
constants. The only difference of enum's manifest constants is that they 
are not an lvalue (their address cannot be taken). But that's a 
*restriction*, it's not a useful property.

The only possible advantage I see is that of optimization: manifest 
constants do not take up space. But that *hardly* seems significant: 
manifest constants are usually numeric, and thus occupy about 2-4 bytes 
each. Even if they are many, in total they are not going to occupy that 
much space. A string literal can easily occupy as much space as several 
manifest constants, and they are likely going to be many string literals 
abound.

-- 
Bruno Medeiros - Software Developer, MSc. in CS/E graduate
http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D



More information about the Digitalmars-d mailing list