Re: [PATCH] 2.3.41 - cleanup file_operations structs

From: David Wragg (dpw@doc.ic.ac.uk)
Date: Sun Jan 30 2000 - 16:24:10 EST


James Manning <jmm@raleigh.ibm.com> writes:
> [ Sunday, January 30, 2000 ] Ingo Oeser wrote:
> > This feature is not ANSI-C, so it is gcc specific.
>
> Yup, and since the kernel is gcc-specific anyway, we might as well
> get some benefit from it :)

In cases where standard C does not suffice, I would agree. But C99
also has designated initializers, with a different syntax from gcc:

gcc-style: struct my_struct foo = { my_member: 42 };
C99-style: struct my_struct foo = { .my_member = 42 };

C99 is only a de jure standard at the moment, but this is a feature of
C99 that will be adopted fairly quickly by other compiler vendors
(since it is relatively easy to implement). I suspect that eventually
gcc will recommend the use of C99-style initializers, with gcc-style
initializers being deprecated (egcs has supported the C99 syntax for a
while). Adopting gcc-style initializers might seem reasonable now, but
it could be a pain in five years time when most C programmers are more
familar with the C99 syntax.

So could you use a macro instead, such as:

#define STRUCT_ELEM_INIT(m) m :

This would avoid the dependency on a gcc-specific feature, and would
allow automatic conversion to the C99 syntax when that becomes widely
established.

David Wragg

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Jan 31 2000 - 21:00:26 EST