- 论坛徽章:
- 2
|
看不出static在这里跟core dump会有什么关系。
不过,最好不要在头文件中定义变量,特别是静态变量。你这样,会使得每个包含该头文件的c文件,都定义了一个作用域为该c文件的static变量。
有例为证:- $ cat common.h
- #ifndef COMMON_H
- #define COMMON_H
- static int x;
- #endif
复制代码- $ cat a.c
- #include "common.h"
- void
- fun_a (void)
- {
- printf ("a.c::x = %d\n", x);
- x++;
- }
复制代码- $ cat b.c
- #include "common.h"
- void
- fun_b (void)
- {
- printf ("b.c::x = %d\n", x);
- x++;
- }
复制代码- $ cat main.c
- #include "common.h"
- int
- main (void)
- {
- x = 10;
- printf ("main.c::x = %d\n", x);
- fun_a ();
- fun_a ();
- fun_b ();
- fun_b ();
- return 0;
- }
复制代码- $ gcc main.c a.c b.c
- $ ./a.out
- main.c::x = 10
- a.c::x = 0
- a.c::x = 1
- b.c::x = 0
- b.c::x = 1
复制代码 |
|