重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果所有函数都在同一个.c文件中。只需要在文件开始的地方定义变量就可以了。
创新互联建站服务项目包括泗洪网站建设、泗洪网站制作、泗洪网页制作以及泗洪网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,泗洪网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到泗洪省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
....
int g_test;
main()
{
....
}
fun1()
{
....
}
fun2()
{
....
}
如果是要在多个.c文件中的所有函数使用同一个变量。
可以用 extern声明。
file.c
int g_int;
main()
{
。。。。。
}
对于工程中的其他文件,想访问这个全局变量可以用
extern int g_int ;声明
这样就可以用了
这不是两个函数,这是一个函数,extern "C" int listid(int id, OUT *);
中的extren通知编译器int listid(int id, OUT *)不在本源代码中实现,
"c"通知编译器用C调用方式调用在另外的一个源程序的函数,
C语言默认的调用方式就是C调用 C++就不同了,,所以最好加个"c"
另:调用方式规定了调用的时候输入参数的顺序和函数返回后输入参数占用的空间由调用程序释放还是由函数释放。这东西不一定要太懂,知道用"c"去考虑调用方式就可以了.
参数不同也是可以的,但是执行一定会有错误,而且应该不能出现同名不同参数的的令一个函数。要不连接的时候就找不到正确的函数。
把变量定义在主函数之外,即把变量设置为全局的。
一般我们都把变量的定义放在函数中,因此变量的范围就是在本函数中。可是如果定义在所有函数的外面,这样所有的函数中,都可以使用本变量。
你可以试一下这个程序。定义一个全局变量a,在主函数中进行赋值,然后在子函数中进行输出,结果是5.
#includestdio.h
int a;
void func();//函数声明
int main()
{
a=5;
func();
}
void func()
{
printf("%d\n", a);
}
+++++++++++++++++++++++++++++++++++++++++++++++++++
当然,除了定义全局变量这个方法,还有其他的方法,那就是指针。在子函数的参数中传递变量的地址,依然可以使用该变量,依然能够改变该变量的值。因为主函数和子函数的变量共用的是同一个地址的变量,因此,不管在哪个函数中对变量进行操作,都会影响变量。
比如下面这个程序,在主函数中a的值为5,将变量a的地址传递过去,子函数将该地址中的变量的值设置为3,然后主函数输出,结果却是3.
#includestdio.h
void func(int *b);//函数声明
int main()
{
int a=5;
func(a);//把变量a的地址传递过去
printf("%d\n", a);
}
void func(int *b)
{
*b=3; //将地址b中变量的值设置为3
}
函数:
1.C语言在相同的.c文件中一定不能定义名称相同的函数,即使是重载的,因为C语言不支持重载,这样链接的时候会报错。
2不同的.c文件中一般不能定义名称相同的函数,比如int func(int*);如果非要定义名称相同的函数,而且函数只在该(对应的).c文件中使用,可以声明成static类型。如两个函数都定义为static int func(int*);这样就可以定义成相同名字。
变量:
1.静态变量在同一个.c文件中可以命名相同,但是只能初始化一次,否则链接出错。而且实际只有一个该名字的变量。
如 static int tst; static int tst; //可以。
static int tst = 0; static int tst; //可以
static int tst = 0; static int tst = 0;//错误
2.静态变量在不同.c文件中可以命名相同。但是该变量只能在该.c文件中使用。
具体可以百度强符号与弱符号。
以上。
c语言中一个完整的函数由函数首部和函数体构成,而且定义函数时两者都是必不可少的。
函数定义的一般形式如下:
类型标识符
函数名(形参表列)
//
这是函数首部
//
以下{
}内的是函数体
{
说明部分
执行部分
}
举例说明如下:
//
定义一个不带返回值的函数
//
函数功能:输出形参的值
void
fun(int
a,
int
b)
{
printf("%d,
%d\n",
a,
b);
}
//
定义一个带返回值的函数
//
函数功能:返回2个整数数的最大值
int
fun(int
a,
int
b)
{
return
ab
?
a
:
b;
}
已经有人给你那么多方法了。。。我还是建议不要用extern去使全局变量,也不要把变量定义在头文件,然后用include把变量包含进其它源文件使用,不要这样做!这是菜鸟的做法!
正确的做法是这样的,你把变量定义在相应的源文件中,定义成全局的,然后写一个接口去读取,充分利用封装的思想!我举个例子哈:
加入你的变量名是 A,定义在abc.c中。。。
这时候你的正确做法是 在abc.c中写一个函数,命名为 int GetAValue(void) { return A; }
这才是大神的做法!这样的话如果是在同一个源文件中,可以直接访问全局变量达到目的。如果是在不同的源文件的其它函数,就调用你写好的 GetAValue()函数去读取!