两个c文件里面有同样的函数名可以吗?
下面来测试一番。
准备工作在a.c里面
#includeint test(void) { printf("test in a.cn"); return 0; } int main(void) { test(); return 0; }
在b.c里面
#include开始编译int test(void) { printf("test in b.cn"); return 0; }
结论:发现是编译错误的
#includestatic int test(void) { printf("test in b.cn"); return 0; }
这时候发现竟然没有报错!
这是因为static关键字把b.c里面的test函数给限制在了b.c文件里面了,a.c编译的时候就不会找到b.c里头的被static关键字修饰过的test函数。
当然啦,这时候要把a.c里面的test函数给屏蔽掉,不然调用的还是自身的。
#includeextern int test(void); // int test(void) // { // printf("test in a.cn"); // return 0; // } int main(void) { test(); return 0; }
这时候也是编译出错的。
那就证明了static的作用很强,真的会把被它修饰的东西全部都锁在一个文件里面,不给别人使用。
两个c文件里面有同样的函数名,可以一起编译吗?
不能一起编译,会报错。
如果想一起编译的话,要保证两个函数不相干,并且在其中一个c文件里面用static关键字去修饰这个函数。



