[mapserver-dev] Modernizing code base: C99 and maybe C++ ?
Even Rouault
even.rouault at spatialys.com
Tue Nov 26 15:43:01 PST 2019
Hi,
the kind of topics that is always controversial, but I do think this is a
matter of survival for the project. I can write C89 code for sure, but which
bad thing did I do to still be obliged to do it :-) ? Should new contributors
be constrained by that... 2020 is just in a few days :-)
Do we have a strong reason to stay with C89 for our .c files ? Not being able
to use for loop initial declarations ( that is "for( int i = 0; i < ... ; ++)"
) is the example of something really annoying. Or being able to put
declarations in the middle of a function instead of putting them at the
beginning of it. This makes code harder to read, maintain and more error prone
because of potential accidental reuse of variables that shouldn't.
All gcc and clang compilers from the last 10 years support C99. Regarding
MSVC, MSVC >= 2015 has decent enough support of it. Do we need to support
older MSVC versions ? I don't think so. Neither current GDAL nor PROJ can
built with older versions
For the record, PROJ requires C99 for its few remaining .c files (and C++11
for .cpp. So does GDAL)
Next topic would be a
for i in *.c; do mv $i "`basename $i .c`.cpp"; done
Well, maybe not like that, because I'm expecting a ton of warnings. But more
on a case by case basis where someone needs to do non-trivial changes in part
of the code.
Being constrained by C deeply sucks honesty. Apart from the Linux kernel which
still resists for good reasons, I can't think of a single one for MapServer.
The main point where C sucks is string manipulation, and MapServer does a ton
of it. Being able to use std::string would be such a relief.
Ah for the record, we do have C++ in the code base: mapogr.cpp and the agg
renderer.
Even
--
Spatialys - Geospatial professional services
http://www.spatialys.com
More information about the mapserver-dev
mailing list