博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
__cplusplus的用处
阅读量:6982 次
发布时间:2019-06-27

本文共 600 字,大约阅读时间需要 2 分钟。

经常在/usr/include目录下看到这种字句:

 

#ifdef __cplusplus

extern "C" {

#endif ...

#ifdef __cplusplus

} #endif

 

不太明白是怎么用的。今天阅读autobook,在第53页看到了作者的解释:C/C++编译器对函数和变量名的命名方法不一样(例如C++中重载的函数有多个名字,而C的函数只有一个名字),这样当C编译器去引用C++编译器编译出来的符号时,会找不到链接。因此,当一个头文件可能既被C程序引用,又被C++程序引用时,需要使用如上代码进行区分。

上面的写法太复杂了,况且两个大括号{和}分离,会造成有些编辑器的缩进错误。更好的手法是将如下代码定义在一个公共头文件中,然后所有其它头文件去引用它:

 

#ifdef __cplusplus

#  define BEGIN_C_DECLS        

extern "C" {

#  define END_C_DECLS          

}

#else

#  define BEGIN_C_DECLS

#  define END_C_DECLS

#endif

 

有关__cplusplus和extern "C"的更多用法,可以参考下文:

《C++中extern “C”含义深层探索》 http://hi.baidu.com/17cpp/blog/item/a46bfd13a4816e025aaf53f6.html

转载地址:http://oqcpl.baihongyu.com/

你可能感兴趣的文章
开始Jquery的学习生涯
查看>>
手机测试项目时报INSTALL_FAILED_INSUFFICIENT_STORAGE
查看>>
10_css选择符类型1.html
查看>>
修改 liteide 的 godoc 文档样式
查看>>
阿里镜像
查看>>
python 实现脚本上传远程服务并执行脚本
查看>>
Direct2D (39) : 使用 IDWriteTextLayout.Draw() 方法绘制文本
查看>>
突然想起曾经一面试官问我 | 和 || 的区别
查看>>
Struts框架之ActionForm(2)——ActionForm的生命周期
查看>>
GNS3中实现IP访问控制列表配置实验
查看>>
关于iwebshop里excel表格导出开发整理
查看>>
DNS软件bind使用(二)
查看>>
用J-Link调试S3C6410(2) --- 运行Leds程序
查看>>
jpeg格式文件剖析(一)
查看>>
TinyX对触摸屏支持的实现
查看>>
as3与java的socket通信实例1
查看>>
Spring学习笔记(11)——bean之间的关系
查看>>
Java学习笔记(35)——Java集合07之TreeMap
查看>>
甲骨文推Oracle WebLogic应用服务器12c
查看>>
WEB服务器、应用程序服务器、HTTP服务器区别
查看>>