MACSio is almost entirely C. But, there are a few places where the keyword mutable is used for members of a struct that is used in a mostly const setting. Also, plugins are loaded during executable load time via the use of non-constant, static initializers which are not supported in C but are in C++.
We should find a way to restrict all this to a single C++ source file having all other files be C code and compiled with a C compiler. Currently, we are using C++ compiler everywhere.
Alternatively, we can keep use of C++ compiler everywhere but we should then change the source file suffixes to be either .C or .cxx.