栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

下面来测试一番。

准备工作

在a.c里面

#include 

int 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;
}
开始编译

结论:发现是编译错误的

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

static int test(void)
{
	printf("test in b.cn");
	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.cn");
	// return 0;
// }
int main(void)
{
	test();
	return 0;
}


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

总结

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/316667.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号