Hi,
C language does not use name mangling like C++. This can lead to
subtle bugs, when function prototype is declared differently in
different files. Simple example:
/* file1.c */
int test(int x, int y)
{
return y;
}
/* file2.c */
#include <stdio.h>
extern int test(int x);
int main()
{
int n = test(2);
printf("n = %d\n", n);
return 0;
}
When this code is compiled using C++ compiler, such error will be
reported at linking phase as "undefined reference to 'test(int)'".
Unfortunately in C compilation and linking will succeed, so bug will
appear at runtime. But such bugs may be very hard to find.
My code base is too big to clean up all this mess and move
declarations to header files manually in relatively short time.
Therefore I was looking for a way to detect such bugs with some tool.
I thought about forcing C++ mangling when compiling C code, but looks
that gcc does not have any command line option to this. Please correct
me if I am wrong.
If there is no such option, I would like to open an enhancement to add
it. I thought about it for some time and looks that this new option
should do 3 things: enable C++ name mangling, enable extern "C"
directive and define the __cplusplus macro. Any comments on this
proposal is also welcome.
Regards,
Daniel