簡體   English   中英

為什么我收到“錯誤:使用未聲明的標識符”錯誤?

[英]Why am I getting “error: use of undeclared identifier” error?

概括

錯誤和代碼位於問題的底部。

我正在編寫一個簡單的程序,因為我很好奇指針的大小是多少,以及當它們指向不同的數據類型時它們是否不同。
我聲明了變量,為什么他們說它們未聲明?

此外,由於某種原因, 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

將#include <stdbool.h> 聲明到 header 中。 它會工作的。謝謝。

變量很好(或者如果它們的聲明沒有被其他錯誤阻止)。
類型標識符bool有問題。 (舊)標准 C 不知道它。
如果您習慣於使用bool作為類型,請在您成功的其他代碼中找出該類型的來源。

C 最初沒有對 boolean 值的原生支持。 為了使事情正常工作,您需要導入 header 文件名 <stdbool.h>

#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));
}

你應該寫這個 header "#include <stdbool.h>" 包含類型 bool

#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));
}

暫無
暫無

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

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