Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 这里首先定义了多个定义_C_Function - Fatal编程技术网

C 这里首先定义了多个定义

C 这里首先定义了多个定义,c,function,C,Function,出于某种奇怪的原因,每次我编译我的项目时,我都会遇到多个定义的奇怪错误,尽管这是我定义函数的唯一地方。我使用代码块作为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++

出于某种奇怪的原因,每次我编译我的项目时,我都会遇到多个定义的奇怪错误,尽管这是我定义函数的唯一地方。我使用代码块作为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;
}

首先,您可以查看下面的讨论:

第二,请至少在发布问题之前正确对齐代码

第三,我认为你的支票应该是这样的:

int checkForSquare(int num){
    static long squared[10001];
    squared[num] = num * num;
    for(int i = 1; i < num; ++i){
        if(squared[i] == num){
            return 1;
        }
    }
    return 0;
}

显示警告消息。删除test.h,如果在代码末尾加上},它应该可以正常工作!多个定义听起来像是链接器错误,而不是编译器错误。编译和链接命令是什么样子的?与您的问题无关,但checkForSquare函数至少有一个大问题。您不能假设squared[]的内容会在一次调用到下一次调用之间保持不变。您可以将其声明为全局,或在main中声明并将其作为参数传递,或将其声明为静态,但无论如何,最好先显式初始化它。此外,您不需要在函数中循环10000次,用NUM替换10000这并不是我见过的最有效的方块检查器。请不要重新发布格式化的代码,只需编辑问题。@WernerHenze他没有足够的代表