Constant expressions in initializers
Bruno Godbout
brunog at cognos.uucp
Wed Mar 29 10:05:11 AEST 1989
I need some help with the ANSI definition of a "constant
expression" inside an initializer. I am trying to compile a
piece of code that is supposed to initialize a structure member with
the value of the "offsetof" macro and the compiler gives me an error.
The error message says that "the initializer must be a constant
expression".
I am using a C compiler which is said to be consistent with the
Draft Proposed ANSI standard for C. The compiler defines the "offsetof"
macro (in <stddef.h>) as follows:
--------
#define offsetof(structype,field) \
( (size_t)(char *) &(((structype *)0)->field) )
--------
Here is a simplified example of what I am trying to do:
--------
struct dummy {
size_t s;
float f;
};
struct dummy Dummy = { offsetof(struct dummy,f),
2.0 };
--------
The compiler tells me that "the initializer must be a constant
expression" and flags the element initialized by offsetof. I compiled
this code successfully with other compilers. Thinking that this might
be relevant to ANSI compilers only, I tried it with "gcc -ansi" and with
"gcc -ansi -pedantic" and it still compiled fine.
I would like to know if this code is rejected by the ANSI
definition or if it is only a restriction of the compiler I am using.
Thank you for your help.
--
Bruno Godbout 3755 Riverside Dr. VOICE: (613) 738-1338 ext.5086
Cognos, Inc P.O. Box 9707 FAX: (613) 738-0002
Ottawa, Ontario
CANADA K1G 3Z4 UUCP: uunet!mitel!sce!cognos!brunog
More information about the Comp.std.c
mailing list