声明:突然看到这篇文章,发现了c语言中使用全局变量的错误,特转之。
首先看一段代码(https://gist.github.com/3760736)
func.c
int
buf
=
0
;
void
func
()
{
buf
=
2
;
/* Do something else */
}
view raw func.c This Gist brought to you by GitHub.
main.c
#include
int
buf
;
void
func
();
int
main
()
{
buf
=
1
;
func
();
printf
(
"%d
\n
"
,
buf
);
return
0
;
}
view raw main.c This Gist brought to you by GitHub.
编译两个文件,输出的结果是怎样的呢?一眼看上去,可能会输出1,因为两个全局变量buf在不同文件中,又没有exter