1、声明链接规范
混编C和C++是C++提供的功能,所以只能在C++代码中想办法。C++编译器允许在声明中带 extern "C" ,表示按照C的方式链接,这样声明的代码可以与C交 互。 extern "language" 是可以嵌套的:
extern "C" {
void a(); // C linkage
extern "C++" {
void b(); // C++ linkage
extern "C"
void c(); // C linkage
}
extern "C++"
void d(); // C++ linkage
}
如果你希望你的C代码可以被C或C++引用,可以在C头文件中将所有声明放在 extern "C" 大括号里,但C编译器不认识这个语法,需要在C编译器使用头文件的时候,就排除掉 extern "C" ,C++编译器使用头文件的时候,就包含 extern "C" 。所有的C++编译器 都预定义了宏 __cplusplus ,所以在C的头文件可以是如下结构:
// 这是几乎每个头文件都需要的,保证头文件只被包含一次
#ifndefxxx_HEADER_GUARD_H_
#definexxx_HEADER_GUARD_H_ // 如果使用C++编译器,则将头文件中所有声明包含在 extern "C" 中
#ifdef__cplusplus
extern"C" {
#endif // __cplusplus// ... body of header
#ifdef__cplusplus
} // closing brace for extern "C"
#endif // __cplusplus#endif// xxx_HEADER_GUARD_H_
网友评论