I have an oversight in my code where I'm declaring & defining a function
with C-linkage, though it's not possible.
// ... some functions which are compatible with C linkage
// Intended to be a helper function not exposed from library
Obviously the GetEngineVersion function cannot have C linkage because it returns a C++ class.
My question is: does GCC have a warning for this scenario? Specifically, can it warn when something is declared extern "C" that's incompatible with C linkage?
I compile with the following warning flags and I didn't get a warning:
-Wall -Wunused-parameter -Wextra -Weffc++ -Wctor-dtor-privacy
-Wnon-virtual-dtor -Wreorder -Wold-style-cast -Woverloaded-virtual
Incidentally, when I compile the same code in VS2013 I get this warning:
warning C4190: 'GetEngineVersion' has C-linkage specified, but returns UDT 'std::basic_string' which is incompatible with C