哪里错了啊

来源:5-13 内部函数与外部函数

婷锅

2015-12-15 16:14

#include <stdio.h>

#include "test.c"   //引用test.c文件

extern void printLine()     //这里定义的方法对吗?

{

   printf("**************\n");   

}

int main()

{

    say();

    return 0;

}



写回答 关注

4回答

  • qq__3559
    2016-01-22 20:38:24

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

  • qq__3559
    2016-01-22 01:26:20

    因为文件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();
    }


    兩年不見

    2.obj : error LNK2005: _say already defined in 1.obj Debug/1.exe : fatal error LNK1169: one or more multiply defined symbols found 执行 link.exe 时出错.

    2016-04-26 11:05:01

    共 2 条回复 >

  • BUG007
    2016-01-01 05:51:27

    答案到底是什么????气死人了,也不把答案写出来,明明和图片一样的

  • onemoo
    2015-12-16 00:33:01

    这样写也算是可以编译通过的。  不过本站最近判断答案正误的功能有问题。


    但是:这样的代码仍是有问题的!  实际使用中绝对不要写这样的代码!!

    具体原因请看这里我的回答:http://www.imooc.com/qadetail/105343

C语言入门

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

926207 学习 · 20797 问题

查看课程

相似问题