关于c语言不同文件之间直接函数接口引用的简介
2015-01-15 00:21
260 查看
在工作中,很多情况下是当前正编辑的A程序的函数接口中需要调用到B文件内部定义的函数接口,
通常情况下我们有如下两种处理方式:
1. 将B文件中A用到的B文件的函数接口放置在B.h文件中,A函数所在文件引用到B.h文件即可;
2. 就是直接在A所在的文件中用:extern func();声明引用。
一般情况下,为了程序的刻度性选用第一种处理方式,但是也不是所有的情况第一种都适用,
比如:在A函数接口中引用到的B文件的函数接口用到了非B或者B.h文件定义的结构体等情况,
这时,若在B.h中声明引用到的函数接口,就会提示你用到了未定义或未知类型的数据结构,
然而当你将包含这个数据类型的结构时,又可能会出现其他的一些错误,比如未知的类型声明或使用,
具体的例子讲解如下
方案 1:
curr.c
struct student{
int id;
int num;
int score;
char name[20];
}STU;
func A()
{
STU stu;
int m, n;
struct
b(m,n);
c(stu);
return 0;
}
B.c
b(int m, int n)
{
...
}
c(STU stu)
{
...
}
B.h
extern b(int m, int n);
extern c(STU stu);
方案2:
curr.c
struct student{
int id;
int num;
int score;
char name[20];
}STU;
extern b(int m, int n);
extern c(STU stu);
func A()
{
STU stu;
int m, n;
struct
b(m,n);
c(stu);
return 0;
}
B.c
b(int m, int n)
{
...
}
c(STU stu)
{
...
}
像上面的这种情况,就是和方案2,因为STU类型是在A.c文件中定义,而B文件中又无法引用到这个结构,多以最好的方法就是按照方案2操作比较节省精力。
通常情况下我们有如下两种处理方式:
1. 将B文件中A用到的B文件的函数接口放置在B.h文件中,A函数所在文件引用到B.h文件即可;
2. 就是直接在A所在的文件中用:extern func();声明引用。
一般情况下,为了程序的刻度性选用第一种处理方式,但是也不是所有的情况第一种都适用,
比如:在A函数接口中引用到的B文件的函数接口用到了非B或者B.h文件定义的结构体等情况,
这时,若在B.h中声明引用到的函数接口,就会提示你用到了未定义或未知类型的数据结构,
然而当你将包含这个数据类型的结构时,又可能会出现其他的一些错误,比如未知的类型声明或使用,
具体的例子讲解如下
方案 1:
curr.c
struct student{
int id;
int num;
int score;
char name[20];
}STU;
func A()
{
STU stu;
int m, n;
struct
b(m,n);
c(stu);
return 0;
}
B.c
b(int m, int n)
{
...
}
c(STU stu)
{
...
}
B.h
extern b(int m, int n);
extern c(STU stu);
方案2:
curr.c
struct student{
int id;
int num;
int score;
char name[20];
}STU;
extern b(int m, int n);
extern c(STU stu);
func A()
{
STU stu;
int m, n;
struct
b(m,n);
c(stu);
return 0;
}
B.c
b(int m, int n)
{
...
}
c(STU stu)
{
...
}
像上面的这种情况,就是和方案2,因为STU类型是在A.c文件中定义,而B文件中又无法引用到这个结构,多以最好的方法就是按照方案2操作比较节省精力。
相关文章推荐
- 关于接口、变量、指针、函数名和引用之间的联系
- C语言学习4: 函数返回值与传入参数,关于函数值传递和类型隐性转换,变量不同的作用域,static变量,多文件编译例如两个C文件,显示函数调用语句跳转,递归,斐波那契数列,多文件编译相同变量的问题。
- C语言不同文件间通过struct管理函数
- c语言不同源文件间函数的调用
- 关于C语言fprintf()函数将纯数据写入文件速度慢的解决方法
- 前言 我们知道不同的操作系统有各自的文件系统,这些文件系统又存在很多差异,而Java 因为是跨平台的,所以它必须要统一处理这些不同平台文件系统之间的差异,才能往上提供统一的入口。 关于FileSy
- 关于C语言数组在函数之间的传值方法
- C语言中不同函数之间怎么传值?
- 关于C语言头文件包含的常用函数介绍
- 关于python同一个文件夹里面不同.py文件的交叉引用
- node.js关于一个js文件引用另一个js文件里面的函数或者数组变量
- 关于Java 中几种不同的引用jar文件的方法
- SQLITE3 C语言接口 API 函数简介
- C语言一个文件中的函数能直接调用另外一个文件中的静态函数吗? (某公司校园招聘面试试题)
- c语言学习--关于函数的参数传递(汇编和可执行文件)
- 在VS.net 2008中利用ATL来创建COM关于接口文件的引用变动
- c语言关于文件操作的常用函数(新手入门看)
- C语言中不同函数之间怎么传值?
- 关于C语言feof()函数判断文件结尾的问题分析
- extern实现源文件(头文件)之间变量和函数的引用