12.3  在C++中使用C头文件

本节描述如何在C++代码中使用C头文件。从C++调用C头文件之前,C头文件必须包含在extern "C"命令中。本节包含以下两部分内容:

·  在C++中使用系统的C头文件;

·  在C++中使用自定义的C头文件。

12.3.1  在C++中使用系统C头文件

要包括标准的系统 C 头文件,如 stdio.h,不必进行任何特殊操作。只有使用extern "C" 命令,由编译器自动包含标准 C 头文件。例如:

#include

int main()

{

...     // C++ 代码

return 0;

}

如果使用此语法包含头文件,则所有库名都放在全局命名空间中。

C++标准规定可以通过特定的C++头文件获取C头文件。这些文件与标准C头文件一起安装在install_directory\RVCT\Data\2.0\build_num \include \platform目录下,可以用常规方法进行引用。例如:

#include

int main()

{

...     // C++ 代码

return 0;

}

在ARM C++中,这些头文件中包含(#include)C头文件。如果使用此语法包含头文件,则所有C++标准库名都在命名空间std中定义,包括C库名。这意味着必须使用下列方法之一来限定所有的库名称。

·  指定标准命名空间,例如:

std::printf("example\n");

·  使用C++关键字“using”向全局命名空间输入一个名称:

using namespace std;

printf("example\n");

·  使用编译程序选项 --using_std。

12.3.2  在C++中使用自定义的C头文件

要包含自己的C头文件,用户必须将#include命令包在extern "C"语句中。可以用以下方法完成此操作:

① 在#include文件之前使用extern,如下例所示。

// C++ code

extern "C" {

#include "my-header1.h"

#include "my-header2.h"

}

int main()

{

// ...

return 0;

}

·  将extern "C"语句添加到头文件,如下例所示。

/* C header file */

#ifdef __cplusplus    /* Insert start of extern C construct */

extern "C" {

#endif

/* Body of header file */

#ifdef __cplusplus  /* Insert end of extern C construct */

}                   /* The C header file can now be */

#endif              /* included in either C or C++ code. */

c 调用c语言头文件,混合使用C、C++和汇编语之:在C++中使用C头文件-嵌入式系统-与非网...相关推荐

  1. python 读取txt文件没读到400行_400行Python代码实现文语处理助手(3) - 音频显示-嵌入式系统-与非网...

    音频显示是 pzh-py-speech 的主要功能,pzh-py-speech 借助的是 Matplotlib 以及 NumPy 来实现的音频显示功能,今天痞子衡为大家介绍音频显示在 pzh-py-s ...

  2. C语言提高代码效率的几种方法,7个提升嵌入式C代码效率的方法-嵌入式系统-与非网...

    C语言在嵌入式领域凭借着高效与简单的特点成为了一门与底层非常亲近的语言,当时由于嵌入式领域相比计算机领域硬件资源上是非常受限的,比如主频比较低.内存小等等. 这样就对嵌入式软件就有了新的要求,务必要写 ...

  3. stm32c语言设计以及注释,13个基于STM32的经典项目设计实例,全套资料~-嵌入式系统-与非网...

    STM32单片机现已火遍大江南北,各种教程资料也是遍布各大网站论坛,可谓一抓一大把,但大部分都差不多.今天总结了几篇电路城上关于STM32 的制作,不能说每篇都是经典,但都是在其他地方找不到的,很有学 ...

  4. 嵌入式c语言开发闹钟,DIY小设计:智能闹钟的简单软硬件实现-嵌入式系统-与非网...

    一.项目概述 1.1 引言 你还在为早上闹钟叫不醒你而发愁吗?你还在为早上突然的闹铃声而烦吗?你还在为早上睁开眼睛时刺眼的灯光而伤脑筋吗?你还在为早上忘记重要事情不愿起床耽误行程而后悔吗?我们团队设计 ...

  5. c语言转fpga原理,要想玩转FPGA,就必须理解FPGA内部的工作原理-可编程逻辑-与非网...

    FPGA(Field-Program mable Gate Array),即现场可编程门阵列,它是在 PAL.GAL.CPLD 等可编程器件的基础上进一步发展的产物.它是作为专用集成电路(ASIC)领 ...

  6. python找不到文件数据_在使用python pykitti packag的目录中找不到文件

    我正在使用pykitti包来可视化python中的KITTI数据集.找不到需要的校准文件.它在指定的目录中查找这些校准文件.我指定了它应该在其中查找这些文件的目录.但是,它仍然给我一个错误: File ...

  7. vue怎么引入js文件_Vue核心知识:8.3 vuex在vue-cli中的应用,文件之间的导出与引入...

    问题:vuex在vue-cli中的应用 第一步:npm下载vuex资源包: npm install vuex --save 第二步:在 src/main.js 中引入 import Vue from ...

  8. 自动从mysql下载文件到powerbi_关于在Power Query和Power BI中从网页下载文件的小提示...

    ​从网络下载数据时,通常最好是从专门为机器对机器通信而设计的API中获取数据,而不是从屏幕上实际可见的站点中获取数据.下载不仅通常更快,而且还常常获得更多非常有用的附加参数.在本文中,我将向您展示如何 ...

  9. 魔术师利用一副牌中的13张红桃c语言,魔术师的猜牌术(1) 魔术师利用一副牌中的13张黑桃 - 下载 - 搜珍网...

    魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一 起,牌面朝下.对观众说:我不看牌,只数数就可以猜到每张牌 是什么,我大声数数,你们听,不信?你们就看.魔术师将最上 面的那张牌数为1,把它翻过来 ...

最新文章

  1. 使用MySQL Proxy解决MySQL主从同步延迟
  2. vue.js 深度监测
  3. 关于动态生成输入界面的一些想法及实践
  4. 【数据竞赛】高质量数据科学竞赛平台汇总
  5. 学习socket nio 之 mina实例
  6. apache配置-html碎片shtml格式
  7. jenkins svn/git sonarqube scanner 代码集成测试
  8. 信息学奥赛一本通(2016:【例4.1】for循环求和)
  9. 如何给页面加上loding_excel打印区域页面设置
  10. layUI提交多个相同name的值
  11. Mysql优化系列(1)--Innodb引擎下mysql自身配置优化
  12. 关于ASP.NET 将数据导出成Excel 的总结[下]
  13. Azure Active Directory密码同步问题
  14. 一个十二年老程序猿的碎碎念
  15. 模式识别与机器学习第六章有监督学习方法
  16. 卡尔曼滤波-卡尔曼滤波全篇讲解
  17. 2020/1/17用python制作二维码
  18. 快手:星星之火,寒冬燎原
  19. CrossAir CA-C03 2.4G贴片天线使用步骤
  20. WPS(word)批量给所有表格添加题注(标题)

热门文章

  1. Appium+python自动化(十六)- ADB命令,知否知否,应是必知必会(超详解)
  2. vue报错Invalid Host header
  3. 09_MySQL DQL_SQL99标准中的多表查询(外连接)
  4. iOS - Animation 八种方法
  5. dedecms 5.7 站点文件从本地子目录上传到远程根目录后找不到模板的解决方案
  6. 58 - 算法 - 百练 2503:Babelfish 二分查找与存储
  7. Java之static的内容
  8. Python+matplotlib绘制三维图形5个精选案例
  9. Python实现带有阻塞和超时放弃功能的队列结构
  10. Python实现本机网络流量监视器