Unless `noexcept` is the only thing in C/C++ (and compiler extensions/attributes) which must be declared on the definition rather than/in addition to the declaration, discussing it (and C++ exceptions) is kind of off-topic. I was pretty sure there were others, particularly GCC `__attribute__`s where the definition and declaration must match (ex. whatever G_GNUC_INTERNAL expands to seems to be like this in C++ at least, last I checked), but I could be wrong.
In any case, maybe we could simply offer a macro to guard out the forward declaration if the plugin opts to do so by defining the macro before including the header. Maybe something like `GEANY_DISABLE_PLUGIN_FORWARD_DECLS` or such.