在目前的设计中,
我写了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>即可。
分享到:
相关推荐
GCC编译器完成从C、C++、objective-C等源文件向运行在特定CPU硬件上的目标代码的转换(这是任何一个编译器需要完成的任务)。 GCC能够处理的源文件分为C、C++...连接,把多个目标代码模块连接生成一个大的目标模块;
然后又使用一些内存分配技巧使namestr数组用起来好像有多个元素,namelen记录了元素个数。它是怎样工作的?这样是合法的和可移植的吗? 2.8 我听说结构可以赋给变量也可以对函数传入和传出。为什么K&R1却明确说明...
通过点到平面的距离的正负,可以看出多个点是否在同侧;如果点到平面的距离为0,则点在平面上,否则不在平面上。 直线是否在平面上 平面和直线的交点 通过调用其他功能可以实现的功能: 平面的法向量平行于...
书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面的主题,并分别给出了解答,而且结合代码示例阐明要点。 《你必须知道的495个C语言问题》结构...
来好像有多个元素。这样合法和可移植吗? . . . . . . . . . . . . 8 2.7 是否有自动比较结构的方法? . . . . . . . . . . . . . . . . . . . . 8 2.8 如何向接受结构参数的函数传入常数值? . . . . . . . . . . ....
18.1. 程序是应该写成一个源文件还是多个源文件? 235 18.2. 各种存储模式之间有什么区别? 236 18.3. 最常使用的存储模式有哪些? 237 18.4. 应该使用哪种存储模式? 237 18.5. 怎样生成一个“.COM”文件...
建立源文件,选择“C++ Source ”,一般都是建立这种文件的(适用在当文件中适用)如果要建立头文件的话,选择“C/C++ Header File”,(适用在多文件工程中使用)命名,文件名称,点击“确定”,之后: 进入编辑区,在...
如果要建立头文件的话,选择“C/C++ Header File”,(适用在多文件工程中使用) 命名,文件名称,点击“确定”,之后: 进入编辑区,在主界面编写代码:如下编写完之后呢: 可以按编译按钮 调试程序,看看有没有...
12.9 有没有办法从一个或多个函数中跳出? 12.10 什么是信号(signal)?用信号能做什么? 12.11 为什么变量名不能以下划线开始? 12.12 为什么编译程序提供了两个版本的malloc()函数? 12.13 适用于整数和浮点数...
然后又使用一些内存分配技巧使 namestr 数组用起来好像有多个元素。这样合法和可移植吗? o 3.7 是否有自动比较结构的方法? o 3.8 如何向接受结构参数的函数传入常数值? o 3.9 怎样从/向数据文件读/写结构? ...
因此可连续多次使用fgetc函数,读取多个字符。 应注意文件指针和文件内部的位置指针不是一回事。文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。文件内部的位置指针用以...
flashloader 项目使用 EWARM 或 MDK-ARM IDE 构建,并附带相应的源文件、头文件和链接器文件: 库:源/头文件,提供所需的驱动程序来管理支持的内存的读取、写入擦除功能,这些功能是实现闪存加载器所需的初始化、...
使用Turbo C2.0无需独立地编辑、编译和连接程序,就能建立并运行C语言程序。因为这些功能都组合在Turbo 2.0的集成开发环境内,并且可以通过一个简单的主屏幕使用这些功能。 基本配置要求 Turbo C 2.0可运行于...
可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错 4、语句for( ;1 ;)有什么问题?它是什么意思? 答:和while(1)相同。 5、do……while和while……do有什么...
两个小岛间可能存在多座桥连接。然而,由于海水冲刷,有一些大桥面临着不能使用的危险。 如果两个小岛间的所有大桥都不能使用,则这两座小岛就不能直接到达了。然而,只要这两座小岛的居民能通过其他的桥或者其他...