【发布时间】:2014-10-02 02:32:07
【问题描述】:
由于某种奇怪的原因,每次我编译我的项目时,都会收到这个奇怪的多重定义错误,即使这是我定义函数的唯一地方。我使用代码块作为我的 IDE,使用 GCC 作为编译器。代码如下:
#include <stdio.h>
#include <test.h>
int checkForSquare(int num){
int squared[10001];
squared[num] = num * num;
for(int i = 0; i <= 10000; i++){
if(squared[i] == num){
return 1;
break;
}
}
return 0;
}
int main(){
for(int x = 0;x <=10000;x++){
if(checkForSquare(x))
printf( "%d" , x );
else
printf("Not Square");
}
return 0;
}
【问题讨论】:
-
显示
warning消息。 -
删除
test.h,只要您在代码末尾添加},它应该可以正常工作! -
“多个定义”听起来像是链接器错误,而不是编译器错误。您的编译和链接命令是什么样的?与您的问题无关,但您的
checkForSquare()函数至少存在一个大问题。您不能假设squared[]的内容会从一个调用持续到下一个调用。您可以将其声明为全局,或在main()中声明并将其作为参数传递,或者您可以将其声明为static,但无论如何,最好先显式初始化它。跨度> -
另外,你不需要在函数中循环10000次,用num替换10000
-
这不是我见过的最有效的方格检查器