两个c文件里面有同样的函数名,可以一起编译吗?

两个c文件里面有同样的函数名可以吗?

下面来测试一番。

准备工作

在a.c里面

#include int test(void)
{printf("test in a.c\n");return 0;
}
int main(void)
{test();return 0;
}

在b.c里面

#include int test(void)
{printf("test in b.c\n");return 0;
}

开始编译

结论:发现是编译错误的
在这里插入图片描述

想法1:那如果在b.c里面增加一个static关键字呢?

#include static int test(void)
{printf("test in b.c\n");return 0;
}

这时候发现竟然没有报错!
这是因为static关键字把b.c里面的test函数给限制在了b.c文件里面了,a.c编译的时候就不会找到b.c里头的被static关键字修饰过的test函数。

想法2:那此时在a.c里面加extern呢?

当然啦,这时候要把a.c里面的test函数给屏蔽掉,不然调用的还是自身的。

#include extern int test(void);
// int test(void)
// {// printf("test in a.c\n");// return 0;
// }
int main(void)
{test();return 0;
}

在这里插入图片描述
这时候也是编译出错的。
那就证明了static的作用很强,真的会把被它修饰的东西全部都锁在一个文件里面,不给别人使用。

总结

两个c文件里面有同样的函数名,可以一起编译吗?
不能一起编译,会报错。

如果想一起编译的话,要保证两个函数不相干,并且在其中一个c文件里面用static关键字去修饰这个函数。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部