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

小编把代码编辑器中的某个方法定义错了,你能帮他改正吗?

#include

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

正在回答

2 回答

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

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

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 回复 有任何疑惑可以回复我~
#1

兩年不見

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 回复 有任何疑惑可以回复我~

我感觉是慕课网的问题。  我把代码弄到编译器上面运行时对的。。。。。

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

举报

0/150
提交
取消

小编把代码编辑器中的某个方法定义错了,你能帮他改正吗?

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