`
nigelzeng
  • 浏览: 599529 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用头文件来链接多个c源文件

    博客分类:
  • C
阅读更多

在目前的设计中,

我写了2个c源文件,a.c和b.c,我需要把b.c中的函数让a能够调用,

其实我也可以把b.c的函数内容全部copy到a.c里,可是这样显得a.c太臃肿。

 

首先需要定义一个头文件,写上b.c文件里的函数原型:

比如说这样定义 " b.h" :

extern	char *getAliasVal(int num);
extern	char *getNodeName(int num);
extern	int writeXml(char bufMac[], char bufMod[], char *nodeName, char *aliasVal, int flag); 

 对于extern关键字,可以这样理解:

加extern的函数实现在外部,不加的在内部。一般包含该实现的头文件,可以不用使用extern了。

 

然后在a.c源文件中,#include "b.h",一般写在#include的最后一行,避免产生错误。

像我这类新手,需要注意的是#include <b.h>和#include “b.h”的区别,前者的意思是去系统的默认目录去查找b.h文件,而后者是在当前目录下查找b.h文件。

 

完成定义b.h,并且在a.h中include之后,

就可以使用b.c中实现的函数了。

 

另外有个编译警告:

                warning: incompatible implicit declaration of built-in function ‘exit’

原因是没有包含对应的头文件,只要加上:#include <stdlib.h>即可。

0
1
分享到:
评论

相关推荐

    GCC使用手册(和常用命令解释)

    GCC编译器完成从C、C++、objective-C等源文件向运行在特定CPU硬件上的目标代码的转换(这是任何一个编译器需要完成的任务)。 GCC能够处理的源文件分为C、C++...连接,把多个目标代码模块连接生成一个大的目标模块;

    你必须知道的495个C语言问题

    然后又使用一些内存分配技巧使namestr数组用起来好像有多个元素,namelen记录了元素个数。它是怎样工作的?这样是合法的和可移植的吗? 2.8 我听说结构可以赋给变量也可以对函数传入和传出。为什么K&R1却明确说明...

    士农库1.1 头文件、lib、dll 两个测试项目

    通过点到平面的距离的正负,可以看出多个点是否在同侧;如果点到平面的距离为0,则点在平面上,否则不在平面上。  直线是否在平面上  平面和直线的交点 通过调用其他功能可以实现的功能:  平面的法向量平行于...

    《你必须知道的495个C语言问题》

    书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面的主题,并分别给出了解答,而且结合代码示例阐明要点。 《你必须知道的495个C语言问题》结构...

    你必须知道的495个C语言问题(PDF)

    来好像有多个元素。这样合法和可移植吗? . . . . . . . . . . . . 8 2.7 是否有自动比较结构的方法? . . . . . . . . . . . . . . . . . . . . 8 2.8 如何向接受结构参数的函数传入常数值? . . . . . . . . . . ....

    C语言编程要点

    18.1. 程序是应该写成一个源文件还是多个源文件? 235 18.2. 各种存储模式之间有什么区别? 236 18.3. 最常使用的存储模式有哪些? 237 18.4. 应该使用哪种存储模式? 237 18.5. 怎样生成一个“.COM”文件...

    vc6.0使用教程详解.doc

    建立源文件,选择“C++ Source ”,一般都是建立这种文件的(适用在当文件中适用)如果要建立头文件的话,选择“C/C++ Header File”,(适用在多文件工程中使用)命名,文件名称,点击“确定”,之后: 进入编辑区,在...

    vc6[1].0使用方法

    如果要建立头文件的话,选择“C/C++ Header File”,(适用在多文件工程中使用) 命名,文件名称,点击“确定”,之后: 进入编辑区,在主界面编写代码:如下编写完之后呢: 可以按编译按钮 调试程序,看看有没有...

    C 语言编程常见问题解答.chm

    12.9 有没有办法从一个或多个函数中跳出? 12.10 什么是信号(signal)?用信号能做什么? 12.11 为什么变量名不能以下划线开始? 12.12 为什么编译程序提供了两个版本的malloc()函数? 12.13 适用于整数和浮点数...

    C语言FAQ 常见问题列表

    然后又使用一些内存分配技巧使 namestr 数组用起来好像有多个元素。这样合法和可移植吗? o 3.7 是否有自动比较结构的方法? o 3.8 如何向接受结构参数的函数传入常数值? o 3.9 怎样从/向数据文件读/写结构? ...

    C语言程序设计标准教程

    因此可连续多次使用fgetc函数,读取多个字符。 应注意文件指针和文件内部的位置指针不是一回事。文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。文件内部的位置指针用以...

    为STM32系列微控制器 提供外部加载器的驱动程序、示例、加载器文件和测试例程_C语言_代码_相关文件_下载

    flashloader 项目使用 EWARM 或 MDK-ARM IDE 构建,并附带相应的源文件、头文件和链接器文件: 库:源/头文件,提供所需的驱动程序来管理支持的内存的读取、写入擦除功能,这些功能是实现闪存加载器所需的初始化、...

    Turbo C2.0

    使用Turbo C2.0无需独立地编辑、编译和连接程序,就能建立并运行C语言程序。因为这些功能都组合在Turbo 2.0的集成开发环境内,并且可以通过一个简单的主屏幕使用这些功能。   基本配置要求  Turbo C 2.0可运行于...

    一些C面试题,希望能对大家有帮助

    可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错 4、语句for( ;1 ;)有什么问题?它是什么意思? 答:和while(1)相同。 5、do……while和while……do有什么...

    蓝桥杯校赛

    两个小岛间可能存在多座桥连接。然而,由于海水冲刷,有一些大桥面临着不能使用的危险。 如果两个小岛间的所有大桥都不能使用,则这两座小岛就不能直接到达了。然而,只要这两座小岛的居民能通过其他的桥或者其他...

Global site tag (gtag.js) - Google Analytics