Glenn Morris <address@hidden
> schrieb am Mo., 12. Dez. 2016 um 23:37 Uhr:
Christopher Wellons wrote:
> Building Emacs itself now requires a C99 compiler, but this requirement
> needn't extend to dynamic modules. Removing a trailing comma (see patch)
> makes emacs-module.h C89/C90 compatible, allowing modules to be built
> using older C compilers. Trailing commas weren't permitted until C99.
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 differently than other parts of the source code, so different conventions apply: It should be more compatible with various compilers, it has to be compatible with C++, all names have to start with "emacs_", it can'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=c++98'.
Aside: 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.
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 legitimately want to support older compilers.
3) It seems this feature was supported by gcc since 0.9? Ie, forever?
Hopefully someone who does have an opinion will quickly either fix or
wontfix this issue. :)
I've independently just pushed the same change. I think not breaking pre-C++11 builds (which probably still see signifcant use) is important enough.