关于static关键字应用到函数上的文章网上比比皆是,但我一直不太能完全理解,我一直觉得只要函数不声明在头文件中,即使不是静态,别的文件也无法采用。但最近看到网上的一个例子。

1 char a = 'A'; // global variable
2 void msg() 
3 {
4     printf("Hello\n"); 
5 }
1 int main(void)
2 {    
3     extern char a;    // extern variable must be declared before use
4     printf("%c ", a);
5     (void)msg();
6     return 0;
7 }

上面的代码没说msg()函数是写在头文件还是写在c文件中,于是我自己试验了一下,发现msg写在c文件中,果然是可以被其他文件调用的。然后我把msg改成static的,则编译的过程中就会报错。

 

这提醒我以后即使是C文件中的函数也要加上static关键字,避免函数名的冲突。

posted on 2013-05-15 08:50  曾经的你|  阅读(231)  评论(0)    收藏  举报