static修饰函数的问题

最近在改程序时发现一个问题,在一个a.c文件中定义了一个函数,然后在a.h中声明了这个函数,到main函数里面使用这个函数的时候就出了如下问题:
error: conflicting types for ‘***’
note: previous declaration of ‘***’ was here
***为该函数名,一直不解这是为什么,后来发现函数用了static修饰,问题应该在这里。static修饰的函数仅在本文件内可见,本文件即a.c,main函数使用该函数就会出上述问题,去掉static后问题就解决了。
static修饰的变量只初始化一次,并且static变量的值会保持直到下一次改变,例如在一个函数里定义了一个static变量,后面修改了该变量的值,多次调用这个函数时该变量的值总是前一次的最后一个值
 
 
View Code
 1 #include <stdio.h>
2 int func()
3 {
4 static int i = 1;
5 i += 1;
6 return i;
7 }
8
9 int main()
10 {
11 printf("%d\n", func());
12 printf("%d\n", func());
13 }
14
15 可以预见输出结果为2,3
多次调用函数func时static变量i只初始化了一次

转载于:https://www.cnblogs.com/4546c/archive/2012/01/10/2317931.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值