问题
I see some code in C++ using extern "C"
at the beginning of the file like this:
#ifdef __cplusplus
extern "C" {}
#endif
What does this mean? How does it work?
回答1:
It's probably not like that, but more like:
#ifdef __cplusplus
extern "C" {
#endif
//some includes or declarations
#ifdef __cplusplus
}
#endif
It tells the compiler to use C
name mangling for whatever is declared inside the directives.
The way you have it now:
#ifdef __cplusplus
extern "C" {}
#endif
is just dead code.
回答2:
It is used to inform the compiler to disable C++ name mangling for the functions defined within the braces. http://en.wikipedia.org/wiki/Name_mangling
回答3:
Extern "C"
- notify the compiler,that the noted function is compiled in C style.
回答4:
It specifies a linkage specification.
It tells the linker how to link the code.
It is useful when you want to mix C and C++ code.
来源:https://stackoverflow.com/questions/9190455/how-does-extern-c-work-in-c