Glenn =
Morris <
rgm@gnu.org> schrieb am Mo=
., 12. Dez. 2016 um 23:37=C2=A0Uhr:
Christopher Wellons wrote:
> Building Emacs itself now requires a C99 compiler, but this requiremen=
t
> needn't extend to dynamic modules. Removing a trailing comma (see =
patch)
> makes emacs-module.h C89/C90 compatible, allowing modules to be built<=
br>
> using older C compilers. Trailing commas weren't permitted until C=
99.
Thanks for the report. I don't have an opinion, but some comments:
1) I think it's going to be hard for developers to remember to use
different conventions for emacs-module.h, so C99-isms are likely to
creep back in.
emacs-module.h is used d=
ifferently than other parts of the source code, so different conventions ap=
ply: It should be more compatible with various compilers, it has to be comp=
atible with C++, all names have to start with "emacs_", it can=
9;t depend on any headers not in the standard library, etc.
If it=
's hard to remember these requirements, maybe we should check for them?=
E.g. add a unit test that including emacs-module.h always works, even with=
'-pedantic-errors -Weverything -Werror -std=3Dc++98'.
As=
ide: technically emacs-module.h already depends on C99/C++11, via intmax_t =
and bool. However, these types are apparently often available even in C++98=
/C89 mode.
=C2=A0
2) Are people really likely to be building Emacs modules with set-ups
that can't build Emacs itself?
Why =
not? Modules could be much simpler than Emacs, and module authors might leg=
itimately want to support older compilers.
=C2=A0
3) It seems this feature was supported by gcc since 0.9? Ie, forever?
https://www.gnu.org/software/gcc/c99status.html
Hopefully someone who does have an opinion will quickly either fix or
wontfix this issue. :)
I've independently just pushed the sam=
e change. I think not breaking pre-C++11 builds (which probably still see s=
ignifcant use) is important enough.