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

这答案也太奇怪了吧

http://img1.sycdn.imooc.com//566e8728000135f911080845.jpg

答案给的就是这样子  可是就是不能运行出和答案一样

而且左边答案运行出来怎么会有那么多东西能  明明代码那里要printf的东西就只有**********而已   至于其他的英文是从哪里来的呀?

正在回答

6 回答

那些话在test.c中的say函数中。

不过这题目完全出错了,别纠结这题了。


你应该已经看过这里的详细解释了 http://www.imooc.com/qadetail/105343  如果还不太明白,就先跳过这节吧。

嗯...其实我觉得我的那个回答写得还算比较详细,要不你指出来哪里不懂,我试着再解释下...

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

前因后果

如何去修改这个错误的题目呢,请把代码也贴出来吧
2015-12-14 回复 有任何疑惑可以回复我~
#2

onemoo 回复 前因后果

在不修改这个代码结构的条件下,去掉hello.c第3行的static,或将其改为extern都可以。 不过最近本站的答案判断一直有问题,不确定能不能通过本站的测试。 请注意:在实际编程中,这样改虽然可以编译通过,但这个程序结构还是有问题的,具体问题点和解决办法的我已经在那个帖子中描述过了。
2015-12-15 回复 有任何疑惑可以回复我~
#3

前因后果 回复 onemoo

请举一个正确的调用另一个.c文件中函数的例子吧
2015-12-16 回复 有任何疑惑可以回复我~
#4

onemoo 回复 前因后果

那个回答中有 “正确的做法是:被include的文件都应该是所谓的“头文件”,也就是只含有声明的文件。 test.c中是say函数的定义,不应直接包含到hello.c中。 应该将say函数的声明写到另一个test.h中,再在hello.c中include <test.h> 另外头文件中还必须要做“重复包含保护”,显然被include的test.c中也没有这样做。”
2015-12-16 回复 有任何疑惑可以回复我~
#5

super珊__ 提问者

非常感谢!
2016-03-02 回复 有任何疑惑可以回复我~
查看2条回复

你在“test.c”文件中把printLine()函数声明一次

printLine()函数在hello.c文件声明也可以,但要在#include"test.c"文件之前声明

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

补充:extern的主要作用不在于定义外部变量或函数,而在于引用定义,如果在其他编译器中去掉#include”test.c",不然会出现重定义(例如visual studio)。

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

因为文件hello.c的printLine()函数和test.c中的say()函数是被相互引用的,因此这两个函数都应为外部函数,在两个文件中都必须声明引用。所以小编的答案是错误的!具体代码如下:

hello.c文件中:

#include <stdio.h>
#include "test.c"   //引用test.c文件
extern void say();
void printLine()     //这里定义的方法对吗?
{
   printf("**************\n");  
}
int main()
{
    say();
    return 0;
}

test.c文件中:

#include <stdio.h>
extern void printLine();
void say(){
    printLine();
    printf("I love imooc\n");
    printf("good good study!\n");
    printf("day day up!\n");
    printLine();
}


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

那为什么什么都调试不出来呢  错在哪里了

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

say()应该是 test.c里定义的函数,然后里面调用了 这里的 printline,同时 print了一这一堆英文


不过 ,include .c我也是醉了

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

举报

0/150
提交
取消
C语言入门
  • 参与学习       926206    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

这答案也太奇怪了吧

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