C语言的. h头文件常会看到如下做法:

#ifdef __FUNC_H_

#define _FUNC_H_

#ifdef __cplusplus__

extern "C" {

#endif

#include<stm32f10x.h>

int foo(char ,int );

#ifdef __cplusplus__

}

#endif

#endif

开始看别人的代码中类似这样的用法,表示不解,直到学到C++的函数重载时明白了。在C语言中,只要根据函数名就可以区分不同的函数。而在C++函数中,支持函数的重载,因此函数名可能会对应多个不同的函数,这些函数的函数名相同,而参数不同。增加extern “C”相当于告诉C++编译器,函数foo是C连接,避免重载的出现。

头文件中extern “C”的理解相关推荐

  1. #ifndef 在头文件中的作用

    在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时 ,就会出现大量"重定义"的错误.在头文件中实用#ifndef #define #e ...

  2. C语言中:在头文件中使用static定义变量意味着什么?

    C语言中:在头文件中使用static定义变量意味着什么? 看到有一位同学在头文件中这么写: static const wchar_t* g_str1 = - static const wchar_t* ...

  3. c/c++头文件中#ifndef/#define/#endif的用法

    想必很多人都看过"头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用".但是是否能理解"被重复引用"是什么意思?头文件被重复 ...

  4. C语言如何使用其他文件定义的结构体?(C++报错:无法转换到不完整的类【需在头文件中定义结构体??】)

    文章目录 20210725 但是,我在使用的时候报错提示:无法转换到不完整的类?? 20210726 这样? 调用时直接加个extern就好,头文件管都不用管? 20210725 但是,我在使用的时候 ...

  5. [C++] 头文件中的#ifndef,#define,#endif以及#pragma用法

    想必很多人都看过"头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用".但是是否能理解"被重复引用"是什么意思?头文件被重复 ...

  6. 能不能在头文件中定义全局变量?

    首先,这是一篇科普文,所以 比较杂,我尽量写清楚一些. 1.ANSI C标准是什么?GNU又是什么?ld是什么? ANSI C是C语言的标准规范,是国际标准化组织制定的国际标准. 虽然 ANSI C规 ...

  7. IAR MSP430头文件中的一些解释

    今天在阅读RF_Example_Code_v1.0中头文件cc430x613x.h时发现了几部分的疑问. 首先来看一下cc430x613x.h 中的3个#define的例子: #define DEFC ...

  8. 【自我修养】不要嘻嘻哈哈的在头文件中定义变量

    在头文件中直接定义变量甚至定义加上赋值,是非常没有修养的行为,新手是经常这样干,有的老手也不注意,这是不应该的. 在头文件中定义变量会出现这些问题: 1,出现变量重复定义的错误.如果你在头文件中定义了 ...

  9. C++核心准则SF.7:不要在头文件中的全局作用域中使用using namespace指令

    SF.7: Don't write using namespace at global scope in a header file SF.7:不要在头文件中的全局作用域中使用using namesp ...

  10. c语言头文件可以定义全局变量,C语言在头文件中定义全局变量

    C语言在头文件中定义全局变量 头文件定义全局变量等问题 全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 可以,在不同的C文件中以static形式来声明同名全局变量.头文件中不可以直接定 ...

最新文章

  1. numpy matlab 索引不同,与Numpy相似的MATLAB数组索引
  2. 《xUnit Test Patterns》学习笔记4 - Principles of Test Automation
  3. 【高精】Oliver的成绩(jzoj 2008)
  4. 快速编写json数据
  5. VB.NET工作笔记004---认识wsf文件
  6. ROS学习笔记(一)——软件版本的选择
  7. Atitit 提升科技影响力----软件方面的.docx 目录 1. 大原则 2 1.1. 科技强人必须是创新型[ 2 1.2. 要有一定的体量和规模 2 1.3. 产业链齐全 底层基础 --高层应
  8. Django报错异常django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without
  9. 逆向学习之Hook技术
  10. 微软商店和防火墙打不开解决方法
  11. Kali渗透测试:Metasploit 6.0 中的Evasion模块
  12. NOI 2017 滚粗记
  13. 非主流图片制作,手机图片制作
  14. Android即时通讯和sns开源项目汇总
  15. mac mysql docker_Mac上使用Docker如何快速启动MySQL测试
  16. 快递单打印专家 免费
  17. ctf 抓捕赵德汉_第三届网络空间安全技术大赛WriteUp(cstc2017)
  18. MT6765 datasheet手册,MT6765参考设计,MT6765芯片资料
  19. Java实现QQ邮箱验证
  20. 动态规划之最长递增子序列 最长不重复子串 最长公共子序列

热门文章

  1. RESTFul API
  2. IXI数据预处理 + Linux + freesurfer
  3. for-earch迭代时的错误————java.util.ConcurrentModificationException
  4. lpx寒假作业案例5
  5. 服务器怎么用sata做系统盘,服务器sas硬盘+sata串口硬盘win2003系统安装方法
  6. 数字信号处理中均值、均方值、均方差、均方根值、均方误差、均方根误差、方差、协方差、标准差对比分析及统计学意义
  7. 对学校的希望和寄语_对小学生的寄语与希望
  8. C++银行账户管理程序1
  9. QT设置按钮QPushButton上图片加文字
  10. java 迪杰斯特拉_JAVA实现最短距离算法之迪杰斯特拉算法