数组具有不完整的元素类型“bool”

所以是的,这是错误,我不知道如何解决这个问题: test.c:5:12: 错误:数组有不完整的元素类型 'bool []'

这是更大代码的一部分,但包含所有相关内容。

#include <stdio.h>
#include <cs50.h>

int candidate_count = 3;
bool locked[][] = {locked[0][1] = false, locked[0][2] = false, locked[1][0] = false, locked[1][2] = false, locked[2][0] = false, locked[2][1] = false};


int main(void)
{
    int lockedCount = 0;
    for(int i = 0; i < candidate_count; i++)
        for(int j = 0; j < candidate_count; j++) {
            if(locked[i][j] == false) {
                locked[i][j] = true;
                printf("locked %i vs %in", i, j);
            }
            if(i == candidate_count - 2) {
                for(int k = 0; k < candidate_count; k++)
                    if(locked[k][j] == true) {
                        lockedCount += 1;
                        printf("locked %i vs %in", i, k);
                    }
                if(lockedCount == 0) {
                    printf("didn't %i vs %in", i, j);
                    break;
                }
                else {
                    locked[i][j] = true;
                    printf("locked %i vs %in", i, j);
                }
            }
        }
}

回答

这些数组的声明和初始化

bool locked[][] = {locked[0][1] = false, locked[0][2] = false, locked[1][0] = false, locked[1][2] = false, locked[2][0] = false, locked[2][1] = false};

不正确,至少因为数组类型的元素bool[]是不完整的类型。

你需要写例如

bool locked[][3] = 
{
    { [1] = false, [2] = false },
    { [0] = false, [2] = false }, 
    { [0] = false, [1] = false }
};

或者或者喜欢

bool locked[][3] = 
{
    [0] = { [1] = false, [2] = false },
    [1] = { [0] = false, [2] = false }, 
    [2] = { [0] = false, [1] = false }
};

实际上这些声明和初始化等价于

bool locked[3][3] = 
{
    false
};

因为声明中数组的所有元素都由零初始化,零是宏的值false..

或者由于数组具有静态存储持续时间,因此默认情况下由零初始化。所以你甚至可以写

bool locked[3][3];

而您忘记包含 header <stdbool.h>。最好包含所需的明确标头。

这是一个演示程序。

#include <stdio.h>
#include <stdbool.h>

bool locked[][3] = 
{
    { [1] = false, [2] = false },
    { [0] = false, [2] = false }, 
    { [0] = false, [1] = false }
};

int main(void) 
{
    // your code goes here
    return 0;
}


以上是数组具有不完整的元素类型“bool”的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>