当前位置: 技术问答>linux和unix
main.c里面的static变量在其他源文件里面怎么使用
来源: 互联网 发布时间:2016-03-28
本文导语: 各个文件如下,是我单独拿来测试这个问题的。现在的情况是testid这个变量是main.c里面定义的, 这个是别人的我不能改。我要在staticvartest.c里面使用它,该怎么办? main.c: #include #include #include "staticvartest.h" static...
各个文件如下,是我单独拿来测试这个问题的。现在的情况是testid这个变量是main.c里面定义的,
这个是别人的我不能改。我要在staticvartest.c里面使用它,该怎么办?
main.c:
#include
#include
#include "staticvartest.h"
static int testid;
int main(void) {
testid = 3;
printf("testid before:%d n",testid);
changeStaticVar();
printf("testid after:%d n",testid);
return EXIT_SUCCESS;
}
staticvartest.h:
#ifndef TEST_H_
#define TEST_H_
void changeStaticVar();
#endif /* TEST_H_ */
staticvartest.c:
?????这里该怎么办?我要在这个文件里面很多地方都要用到testid,就是main.c里面那个。
extern static int testid不行,编译报错:错误:声明指定了多个存储类。
void changeStaticVar(){
testid=8;
}
这个是别人的我不能改。我要在staticvartest.c里面使用它,该怎么办?
main.c:
#include
#include
#include "staticvartest.h"
static int testid;
int main(void) {
testid = 3;
printf("testid before:%d n",testid);
changeStaticVar();
printf("testid after:%d n",testid);
return EXIT_SUCCESS;
}
staticvartest.h:
#ifndef TEST_H_
#define TEST_H_
void changeStaticVar();
#endif /* TEST_H_ */
staticvartest.c:
?????这里该怎么办?我要在这个文件里面很多地方都要用到testid,就是main.c里面那个。
extern static int testid不行,编译报错:错误:声明指定了多个存储类。
void changeStaticVar(){
testid=8;
}
|
static int;代表只能在该文件中使用的,不能做为外部链接
|
第二个问题:
changeStaticVar()里面定义的testid=9;并不是和main里面的testid一样的,是两个相互独立的,
改变 changeStaticVar()里面的testid值并不会影响到main
可以把testid改为全局变量 就可以了
main.c:
#include
#include
#include "staticvartest.h"
testid = 3;
int main(void) {
printf("testid before:%d n",testid);
changeStaticVar();
printf("testid after:%d n",testid);
return EXIT_SUCCESS;
}
staticvartest.h:
#ifndef TEST_H_
#define TEST_H_
static int testid;
void changeStaticVar();
#endif /* TEST_H_ */
staticvartest.c:
#include "staticvartest.h"
void changeStaticVar(){
testid=9;
printf("testid in function:%d n",testid);
}
changeStaticVar()里面定义的testid=9;并不是和main里面的testid一样的,是两个相互独立的,
改变 changeStaticVar()里面的testid值并不会影响到main
可以把testid改为全局变量 就可以了
main.c:
#include
#include
#include "staticvartest.h"
testid = 3;
int main(void) {
printf("testid before:%d n",testid);
changeStaticVar();
printf("testid after:%d n",testid);
return EXIT_SUCCESS;
}
staticvartest.h:
#ifndef TEST_H_
#define TEST_H_
static int testid;
void changeStaticVar();
#endif /* TEST_H_ */
staticvartest.c:
#include "staticvartest.h"
void changeStaticVar(){
testid=9;
printf("testid in function:%d n",testid);
}
|
static 这个关键字说明被声名的函数或变量的作用域只在本文件中.
|
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。