簡體   English   中英

警告:function 'colcheck' [-Wimplicit-function-declaration] 的隱式聲明

[英]warning: implicit declaration of function ‘colcheck’ [-Wimplicit-function-declaration]

我是 C 編程的新手,這就是我對其語法感到困惑的原因。 問題:數獨游戲使用 9 × 9 網格,其中每一列和每一行,以及 9 個 3 × 3 子網格中的每一個,都必須包含所有數字 1 ⋅ ⋅ ⋅ 9。圖 4.26 給出了一個有效的示例數獨謎題。 該項目包括設計一個多線程應用程序,以確定數獨謎題的解決方案是否有效。 這個應用程序有幾種不同的多線程方式。 一個建議的策略是創建檢查以下標准的線程: • 檢查每列是否包含數字 1 到 9 的線程 • 檢查每行是否包含數字 1 到 9 的線程

#include <stdlib.h>

int i,j,m,b,k;
void main()
{
    int a[9][9]={1,2,3,4,5,6,7,8,9,
                4,5,6,7,8,9,1,2,3,
                7,8,9,1,2,3,4,5,6,
                2,3,4,5,6,7,8,9,1,
                5,6,7,8,9,1,2,3,4,
                8,9,1,2,3,4,5,6,7,
                3,4,5,6,7,8,9,1,2,
                6,7,8,9,1,2,3,4,5,
                9,1,2,3,4,5,6,7,8};
                
                
    if(rowcheck(a)==1 && colcheck(a)==1 & cubecheck(a)==1)
    {
        printf("Success");
    }
    else{
        printf("Failed");
    }
}

int rowcheck(int a[9][9])
{
    int c[10]={0};
    for(i=0;i<9;i++)
    {
        for(j=0;j<9;j++)
        {
            c[a[i][j]]++;
        }
        for(k=1;k<=9;k++)
            if(c[k]!=1)
            {
                printf("The value %d came %d times in %d row \n",k,c[k],i+1);
                return 0;
            }
            for(k=1;k<=9;k++)
                c[k]=0;
    }
    return 1;
}

int colcheck(int a[9][9])
{
    int c[10]={0};
    for(i=0;i<9;i++)
    {
        for(j=0;j<9;j++)
        {
            c[a[i][j]]++;
        }
        for(k=1;k<=9;k++)
            if(c[k]!=1)
            {
                printf("The value %d came %d times in %d column \n",k,c[k],i+1);
                return 0;
            }
            for(k=1;k<=9;k++)
                c[k]=0;
    }
    return 1;
}

int cubecheck(int a[9][9])
{
    int c[10]={0},count=0;
    for(m=0;m<9;m+=3)
    {
        for(b=0;b<9;b+=3)
        {
            for(i=m;i<m+3;i++)
            {
                for(j=b;j<b+3;j++)
                {
                    c[a[i][j]]++;
                }
            }
            count++;
            for(k=1;k<=9;k++)
                if(c[k]!=1)
                {
                    printf("The value %d came %d times in %d box\n",k,c[k],count);
                    return 0;
                }
                for(k=1;k<=9;k++)
                    c[k]=0;
        }
    }
    return 1;
}```

I am getting this error plz help.

```proj1.c: In function ‘main’:
proj1.c:18:8: warning: implicit declaration of function ‘rowcheck’ [-Wimplicit-function-declaration]
     if(rowcheck(a)==1 && colcheck(a)==1 & cubecheck(a)==1)
        ^~~~~~~~
proj1.c:18:26: warning: implicit declaration of function ‘colcheck’ [-Wimplicit-function-declaration]
     if(rowcheck(a)==1 && colcheck(a)==1 & cubecheck(a)==1)
                          ^~~~~~~~
proj1.c:18:43: warning: implicit declaration of function ‘cubecheck’ [-Wimplicit-function-declaration]
     if(rowcheck(a)==1 && colcheck(a)==1 & cubecheck(a)==1)
                                           ^~~~~~~~~
proj1.c: At top level:
proj1.c:136:1: error: expected identifier or ‘(’ before ‘}’ token
 }```
 ^


您需要在main()方法之前為您的函數提供聲明,因為您在之后定義它們:。 前向 function 聲明只是告訴編譯器,在您的代碼中的某處,將定義一個具有相同名稱的 function,在這種情況下,在main()中使用它之后。

通常,在 C/C++ 中,您在 header 文件中定義 function 原型,然后將它們包含在您的主源代碼中,因此可以在調用函數后安全地定義函數。

#include <stdio.h>
#include <stdlib.h>

// add forward declarations for your functions here
int rowcheck(int [][9]);
int colcheck(int [][9]);
int cubecheck(int [][9]);

int main() {
    // your code
    return 0:
}

// method definitions afterwards

int rowcheck(int a[9][9]) {
    // your definition here
}

int colcheck(int a[9][9]) {
    // your definition here
}

int cubecheck(int a[9][9]) {
    // your definition here
}

此外,將您的main方法定義為int main()而不是void main()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM