为了账号安全,请及时绑定邮箱和手机立即绑定

注掉 test.c

能不能理解为重复引用的问题.本来say()方法是全局的一个方法,main不需要引入test.c就可以调用,现在强行把test.c引入到hello里面,导致了现在的作用域里面有2个say()方法,所以程序报错

正在回答

3 回答

因为第二行已经调用了test.c,如果test.c中的say()不改成static类型的话,那么hello.c中的第九行中的say()就会被系统认为再一次调用了test.c文件,从而报错;如果改为static类型,那么hello.c中的第九行中的say()就只能从第二行已调用的test.c文件中调用,从而避免了二次调用。个人见解。。。

0 回复 有任何疑惑可以回复我~

对,是这样的。但是就是不知道怎么解答

0 回复 有任何疑惑可以回复我~

你的这个问题也是我的问题,这个问题把我弄崩溃了。首先要说一点,我不知道他的答案显示是用什么模拟的。如果按照老师给的参考,是无法通过的。按照C语言的逻辑来讲,你的想法是对的。我电脑并没有安装纯正的c语言编译程序。大多数人用的是vs6.0来学习C语言,我没有安装,不知道会显示什么。我用的是vs2019,vs2019中支持多种语言,我用了c++,所以有个问题。c语言虽然能在c++运行,可是c++不是c语言啊。这就是一种包含关系。c++源文件为.cpp文件,c为.c文件。在vs中,必须#include<test.cpp>文件,否则会报错,说say()是未定义的标识符,可是当你把<test.cpp>写入之后还会报错,重复定义了say!我试着把say用static修饰,程序可以运行,但是有个问题出现了。hello文件中定义的printLine()函数在say()函数中没法用了,换言之就是输出结果没有printLine。你可以去试试看,我们可以一起研究一下。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

注掉 test.c

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信