C++ incompatability, was C99: Suggestions for style(9)
Matthew Fleming
matthew.fleming at isilon.com
Fri May 1 17:00:09 UTC 2009
> > [snip exciting discussion on style]
> >
> > > There are several C99 features used already, e.g. designated
initializers:
> > > bla bli = { .blub = "foo", .arr[0] = 42 };
> > > Do you suggest that this should not be used, because it is
inconsistent
> > > with all the other existing compound initialisations?
> >
> > Regarding this great feature of C99, sadly, it's not C++ compatible.
So
> > while designated initializers in a C source file are great, in a
header
> > file they will give a compile error if included in e.g. a C++ kernel
> > module (which otherwise would work fine).
>
> Why would you put initializers in a header file? If included
> in more than one file, the linker will complain that the
> initialized variable is multiply defined. If creating header
> files that get included in in only one file *and* you want to
> use initializers, why not use the right language for include
> file code.
Macros, like MALLOC_DEFINE, DB_COMMAND, etc., define initialized
variables when used. These can't be changed to use named initializers
without breaking C++.
Thanks,
matthew
More information about the freebsd-hackers
mailing list