09-07-2012
Quote:
Originally Posted by
alex_5161
(It is not just #define that vaiporing on precompilation. )
Unfortunately I must disagree. For your purposes, they amount to #define's without the mess. They don't vanish in
precompilation, but they do vanish in a later phase of compilation, values set and irreversible. Your program can't iterate through them, convert them to or from strings, or map one set of them to another unless you do it the hard way, building your own tables of values to look them up in. They're just labels for numbers.
In C++, enum's are a little more strict to prevent some of that weirdness. They didn't add anything that'd actually help you, though. They didn't add any syntax to iterate through them, convert them to or from strings, or map one set of them to another, just made it harder to set an enum to an invalid value. They prevented you from doing arithmetic on enums like
myenum++ since that might possibly end up at an invalid enum. They prevented you from assigning an enum from an integer without a typecast in case that causes an invalid enum. And so forth. (No, it doesn't actually check if the enums are valid if you typecast. It just lets it through.) So C++ code at runtime is still as ignorant of their status as anything but numbers as C is.
Last edited by Corona688; 09-07-2012 at 06:40 PM..
This User Gave Thanks to Corona688 For This Post:
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
Hi, guys !
Could someone clarify one thing for me:
I start machine from disk0, and want to check the /etc/vfstab on disk1. How do i do it ?
Tried to write:
cd /
mount /dev/dsk/c0t1d0s0 /mnt
But if I do cd /mnt, it is empty. I expected to see disk1 there ? Or am I wrong ?
How do I... (3 Replies)
Discussion started by: DGoubine
3 Replies
2. Programming
helo i have asked in exam what that what is the base type of
enum
options are given bewlo
(1) long int
(2) short int
(3) signed int
(4) unsigned int
can u tell me what is the exact answer from the above option
Regards,
Amit (1 Reply)
Discussion started by: amitpansuria
1 Replies
3. IP Networking
Hi Guys,
This is really really urgent. Am looking out for some quick answers.
I'm developing a DNS Resolver client that interprets DNS Query repsonses & pass on the needful to DNS applications.
When an ENUM query(modified to an nslookup naptr query) is issued & an NAPTR RR(Resource Record)... (1 Reply)
Discussion started by: smanu
1 Replies
4. Programming
#include <iostream>
#include <stdio.h>
using namespace std;
typedef struct A
{
enum a{ red,blue,green}a;
}obj11;
obj11 obj1;
int main()
{
//obj1.a=red; // how to set variable ?
cout<<"sizeof struct is n"<<sizeof(obj1);
cout<<"obj1.a is"<<obj1.a;
if... (1 Reply)
Discussion started by: crackthehit007
1 Replies
5. Solaris
One more query in SVM :) Now with hot spare spool...
I can understand adding/replacing a slice in particular hot spare pool with "-a / -r" option (or) adding a slice to all existing hot spare pool with "-all" option. Here my query is for deleting, we have only option "-d".
1) If the hot... (2 Replies)
Discussion started by: gowthamakanthan
2 Replies
6. Solaris
Hi Guys,
Can Someone pls let me know the thorough process for Hot spare replacement
as current Hot spare slice has broken down . :mad:
Thanks
---------- Post updated at 06:34 PM ---------- Previous update was at 05:21 PM ----------
Update : Its a solaris 10 box (1 Reply)
Discussion started by: Solarister
1 Replies
7. Programming
Say I have a list of enumerations I wish to use to select a variable at compile-time:
enum pins
{
PIN_A=1,
PIN_B=7,
PIN_C=6,
}
int VAR1, VAR2, VAR3, VAR4, VAR5, VAR6, VAR7;
#define PIN_TO_VAR(NUM) VAR ## NUM
int main(void)
{
PIN_TO_VAR(PIN_A)=32;... (2 Replies)
Discussion started by: Corona688
2 Replies
8. Solaris
Dears how can i make this spare disks working online to replace a defective disks
vxdisk list
DEVICE TYPE DISK GROUP STATUS
c0t10d0s2 sliced - - error
c0t11d0s2 sliced disk08 rootdg online
c1t16d0s2 sliced ... (3 Replies)
Discussion started by: thecobra151
3 Replies
9. Programming
Hi All,
I came across this error "MIXING ENUM TYPES" when I run my C program against the Coverity Tool. I've made many search relating to the error, but I didnt find the exact solution. Can anyone help me to overcome this.?
Thanks in Advance.!! (3 Replies)
Discussion started by: Parameswaran
3 Replies
10. Solaris
Hi Guys,
obviously new to SOLARIS SUN SPARC 5.10
I would really appreciate if you help me see how to find free disks available in my system.
Like i am a linux admin. If i want to grow a file system in linux. I would first have a look at my volume groups to see if they have free PEs if not then... (2 Replies)
Discussion started by: aiqbal
2 Replies
LEARN ABOUT REDHAT
glib-mkenums
GLIB-MKENUMS(1) General Commands Manual GLIB-MKENUMS(1)
NAME
glib-mkenums - C language enum description generation utility
SYNOPSIS
glib-mkenums [options] [files...]
DESCRIPTION
glib-mkenums is a small perl-script utility that parses C code to extract enum definitions and produces enum descriptions based on text
templates specified by the user. Most frequently this script is used to produce C code that contains enum values as strings so programs can
provide value name strings for introspection.
INVOCATION
glib-mkenums takes a list of valid C code files as input. The options specified control the text that is output, certain substitutions are
performed on the text templates for keywords enclosed in @ characters.
Options
--fhead <text>
Put out <text> prior to processing input files.
--fprod <text>
Put out <text> everytime a new input file is being processed.
--ftail <text>
Put out <text> after all input files have been processed.
--eprod <text>
Put out <text> everytime an enum is encountered in the input files.
--vhead <text>
Put out <text> before iterating over the set of values of an enum.
--vprod <text>
Put out <text> for every value of an enum.
--vtail <text>
Put out <text> after iterating over all values of an enum.
--comments <text>
Template for auto-generated comments, the default (for C code generations) is "/* @comment@ */".
--template file
Read templates from the given file. The templates are enclosed in specially-formatted C comments
/*** BEGIN section ***/
/*** END section ***/
where section may be file-header, file-production, file-tail, enumeration-production, value-header, value-production, value-tail or
comment.
-h, --help
Print brief help and exit.
-v, --version
Print version and exit.
Production text substitutions
Certain keywords enclosed in @ characters will be substituted in the outputted text. For the substitution examples of the keywords below,
the following example enum definition is assumed:
typedef enum
{
PREFIX_THE_XVALUE = 1 << 3,
PREFIX_ANOTHER_VALUE = 1 << 4
} PrefixTheXEnum;
@EnumName@ The name of the enum currently being processed, enum names are assumed to be properly namespaced and to use mixed capitaliza-
tion to separate words (e.g. PrefixTheXEnum).
@enum_name@ The enum name with words lowercase and word-separated by underscores (e.g. prefix_the_xenum).
@ENUMNAME@ The enum name with words uppercase and word-separated by underscores (e.g. PREFIX_THE_XENUM).
@ENUMSHORT@ The enum name with words uppercase and word-separated by underscores, prefix stripped (e.g. THE_XENUM).
@VALUENAME@ The enum value name currently being processed with words uppercase and word-separated by underscores, this is the assumed lit-
eral notation of enum values in the C sources (e.g. PREFIX_THE_XVALUE).
@valuenick@ A nick name for the enum value currently being processed, this is usually generated by stripping common prefix words of all the
enum values of the current enum, the words are lowercase and underscores are substituted by a minus (e.g. the-xvalue).
@type@ This is substituted either by "enum" or "flags", depending on whether the enum value definitions contained bit-shift operators
or not (e.g. flags).
@Type@ The same as @type@ with the first letter capitalized (e.g. Flags).
@TYPE@ The same as @type@ with all letters uppercased (e.g. FLAGS).
@filename@ The name of the input file currently being processed (e.g. foo.h).
Trigraph extensions
Some C comments are treated specially in the parsed enum definitions, such comments start out with the trigraph sequence "/*<" and end with
the trigraph sequence ">*/". Per enum definition, the options "skip" and "flags" can be specified, to indicate this enum definition to be
skipped, or for it to be treated as a flags definition, or to specify the common prefix to be stripped from all values to generate value
nicknames, respectively. Per value definition, the options "skip" and "nick" are supported. The former causes the value to be skipped, and
the latter can be used to specify the otherwise auto-generated nickname. Examples:
typedef enum /*< skip >*/
{
PREFIX_FOO
} PrefixThisEnumWillBeSkipped;
typedef enum /*< flags,prefix=PREFIX >*/
{
PREFIX_THE_ZEROTH_VALUE, /*< skip >*/
PREFIX_THE_FIRST_VALUE,
PREFIX_THE_SECOND_VALUE,
PREFIX_THE_THIRD_VALUE, /*< nick=the-last-value >*/
} PrefixTheFlagsEnum;
SEE ALSO
glib-genmarshal(1)
BUGS
None known yet.
AUTHOR
glib-mkenums was written by Tim Janik <timj@gtk.org> and Owen Taylor <otaylor@redhat.com>.
This manual page was provided by Tim Janik <timj@gtk.org>.
27 Jul 2002 GLIB-MKENUMS(1)