C++ “外部”;",;,它有什么用处?
可能重复:C++ “外部”;",;,它有什么用处?,c++,c,c-preprocessor,C++,C,C Preprocessor,可能重复: 我在很多图书馆都会遇到以下几行:;它们有什么用?何时/何地定义了cplusplus #ifdef __cplusplus extern "C" { #endif //... #ifdef __cplusplus } #endif < C++ >代码> >代码>有时你必须混合C代码和C++代码。这可能有很多原因,例如,您有一个很久以前用C编写的驱动程序,您希望在全新的C++0x项目中使用它 每个函数类型和名称都有一个语言链接。C与C++的函数有区别,因为C没有函
我在很多图书馆都会遇到以下几行:;它们有什么用?何时/何地定义了cplusplus
#ifdef __cplusplus
extern "C" {
#endif
//...
#ifdef __cplusplus
}
#endif
< C++ >代码> >代码>有时你必须混合C代码和C++代码。这可能有很多原因,例如,您有一个很久以前用C编写的驱动程序,您希望在全新的C++0x项目中使用它 每个函数类型和名称都有一个语言链接。C与C++的函数有区别,因为C没有函数名重载,函数名可以作为C中唯一的标识符,但是不能在C++中使用。这就是所谓的 由于不需要在C中损坏名称,因此使用
extern“C”
将使编译器忽略添加链接的参数信息
C++标准明确地在7.5个PARA 3中声明:
每个实现应提供与书面形式的功能的链接 C语言程序设计,C语言,与C++函数的连接,“C++”。< C++ >代码> >代码>有时你必须混合C代码和C++代码。这可能有很多原因,例如,您有一个很久以前用C编写的驱动程序,您希望在全新的C++0x项目中使用它 每个函数类型和名称都有一个语言链接。C与C++的函数有区别,因为C没有函数名重载,函数名可以作为C中唯一的标识符,但是不能在C++中使用。这就是所谓的 由于不需要在C中损坏名称,因此使用
extern“C”
将使编译器忽略添加链接的参数信息
C++标准明确地在7.5个PARA 3中声明:
每个实现应提供与书面形式的功能的链接 C语言程序设计,C语言,与C++函数的连接,“C++”。对于@singerofthefall Awesome,你可以在括号里放任何你想要的C代码?什么是7.5帕拉3?@萨阿德,是的,它用于在C++内部包含有效的C代码。7.5第3段是我引用的标准的一部分,“让你执行C代码”完全是胡说八道。C++中的一切都是C++。code>extern“C”只是一个链接说明符。@SingerOfTheFall你有到该标准的链接吗?@saad,该标准本身是可以购买的,你不能正式免费获得它,但是,你可以找到一个最新的草稿,通常是免费的,与最终版本没有太大区别。@SingerOfTheFall真棒,你可以在括号里放任何你想要的C代码?什么是7.5帕拉3?@萨阿德,是的,它用于在C++内部包含有效的C代码。7.5第3段是我引用的标准的一部分,“让你执行C代码”完全是胡说八道。C++中的一切都是C++。code>extern“C”只是一个链接说明符。@SingerOfTheFall你有到标准的链接吗?@saad,标准本身是可以购买的,你不能正式免费获得它,但是,你可以找到一个最新的草稿,它通常是免费的,与最终版本没有太大区别。
complex sqrt(complex); //C++ linkage by default
extern "C" {
double sqrt(double);//C linkage
}