关于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关键字,避免函数名的冲突。