Sponsored Content
Top Forums Programming C- trying to code a 'spare array'; 'enum' fauled. Post 302697989 by Corona688 on Friday 7th of September 2012 05:24:54 PM
Old 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

Vfstab on spare disk - HOW ? Mount ?

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

what is the base type of enum

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

DNS ENUM RR interpretation

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

enum in c++

#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

Hot Spare pool

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

Hot Spare replacement

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

enum and C preprocessor

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

How to get spare disks working

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

Mixed enum types - coverity defect

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

How to determine if i have spare disks in 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
GLIB-MKENUMS(1) 						   User Commands						   GLIB-MKENUMS(1)

NAME
glib-mkenums - C language enum description generation utility SYNOPSIS
glib-mkenums [OPTION...] [FILE...] 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. 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. Production text substitutions Certain keywords enclosed in @ characters will be substituted in the emitted 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 capitalization 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). @ENUMPREFIX@ The prefix of the enum name (e.g. PREFIX). @VALUENAME@ The enum value name currently being processed with words uppercase and word-separated by underscores, this is the assumed literal 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). @valuenum@ The integer value for the enum value currently being processed. This is calculated by using perl to attempt to evaluate the expression as it appears in the C source code. If evaluation fails then glib-mkenums will exit with an error status, but this only happens if @valuenum@ appears in your value production template. (Since: 2.26) @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). @basename@ The base name of the input file currently being processed (e.g. foo.h). (Since: 2.22) 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. The "underscore_name" option can be used to specify the word separation used in the *_get_type() function. For instance, /*< underscore_name=gnome_vfs_uri_hide_options >*/. 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; 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. --identifier-prefix PREFIX Indicates what portion of the enum name should be intepreted as the prefix (eg, the "Gtk" in "GtkDirectionType"). Normally this will be figured out automatically, but you may need to override the default if your namespace is capitalized oddly. --symbol-prefix PREFIX Indicates what prefix should be used to correspond to the identifier prefix in related C function names (eg, the "gtk" in "gtk_direction_type_get_type". Equivalently, this is the lowercase version of the prefix component of the enum value names (eg, the "GTK" in "GTK_DIR_UP". The default value is the identifier prefix, converted to lowercase. --help Print brief help and exit. --version Print version and exit. SEE ALSO
glib-genmarshal(1) GObject GLIB-MKENUMS(1)
All times are GMT -4. The time now is 10:04 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy