【问题标题】:Why am I getting "error: use of undeclared identifier" error?为什么我收到“错误:使用未声明的标识符”错误?
【发布时间】:2021-03-18 17:35:56
【问题描述】:

总结

错误和代码在问题的底部。

我正在编写一个简单的程序,因为我很好奇指针的大小是多少,以及当它们指向不同的数据类型时它们是否不同。
我声明了变量,为什么他们说它们是未声明的?

此外,由于某种原因,int* 没有错误,而只有bool*char*,如下面的错误消息所示。

代码

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

int main(void) {
    int* ptri = NULL;
    char* ptrc = NULL;
    bool* ptrb = NULL;
    printf("%lu %lu %lu", sizeof(ptri), sizeof(ptrc), sizeof(ptrb));
}

错误信息

:!clang test.c && ./a.out
test.c:7:5: error: use of undeclared identifier 'bool'
    bool* ptrb = NULL;
    ^
test.c:7:11: error: use of undeclared identifier 'ptrb'
    bool* ptrb = NULL;
          ^
test.c:8:62: error: use of undeclared identifier 'ptrb'
    printf("%lu %lu %lu", sizeof(ptri), sizeof(ptrc), sizeof(ptrb));
                                                             ^
3 errors generated.

shell returned 1

【问题讨论】:

    标签: c printf null-pointer


    【解决方案1】:

    您应该编写包含 bool 类型的头文件“#include

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    
    int main(void) {
        int* ptri = NULL;
        char* ptrc = NULL;
        bool* ptrb = NULL;
        printf("%lu %lu %lu", sizeof(int), sizeof(char), sizeof(bool));
    }
    

    【讨论】:

      【解决方案2】:

      在标题中声明#include 。它会工作的。谢谢。

      【讨论】:

        【解决方案3】:

        C 最初没有对布尔值的原生支持。 为了让事情正常工作,您需要导入一个头文件名

        #include <stdio.h>
        #include <stdbool.h>
        
        int main(void) {
            int* ptri = NULL;
            char* ptrc = NULL;
            bool* ptrb = NULL;
            printf("%lu %lu %lu", sizeof(ptri), sizeof(ptrc), sizeof(ptrb));
        }
        

        【讨论】:

          【解决方案4】:

          变量很好(或者如果它们的声明没有被其他错误阻止)。
          类型标识符 bool 有问题。 (旧)标准 C 不知道它。
          如果您习惯使用bool 作为类型,请在您成功的其他代码中找出该类型的来源。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-04-22
            • 1970-01-01
            • 2013-03-12
            相关资源
            最近更新 更多