问答详情
源自:5-13 内部函数与外部函数

注掉 test.c

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

提问者:qq_追心_ 2019-06-04 22:23

个回答

  • qq_慕用5232731
    2020-01-29 19:57:50

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

  • qq_不再_3
    2019-07-24 16:19:22

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

  • Lyke9883139
    2019-06-16 10:59:44

    你的这个问题也是我的问题,这个问题把我弄崩溃了。首先要说一点,我不知道他的答案显示是用什么模拟的。如果按照老师给的参考,是无法通过的。按照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。你可以去试试看,我们可以一起研究一下。