Linkage between C++ and non-C++ code fragments can be achieved using a linkage-specification. For example:
extern "C" int func(int arg1); // func has C linkage
The quoted string in the linkage specification indicates the required language linkage. The linkage rules of a given language affect the way function names are handled (e.g., all uppercase or not, whether name mangling is applied etc.), the argument passing mechanism and the return value. Using a linkage-specification with a string that is unknown to the implementation is an error. A C++ compiler must support two linkage types: extern “C” and extern “C++,” which is the default linkage type and is therefore redundant. Many implementations support additional languages, for instance:
extern "Ada" int func(int arg1); // Ada linkageextern "Fortran" int func(int arg1); // Fortran linkage