2

Webから、CにはNULキーワードが含まれていることがわかりました。

しかし、コンパイル中にエラーが発生します

NUL undeclared first use in this function'

私のコードフラグメント:

for (;;) {
        char ch = (*pzDest = *pzSrc);
        if (ch == NUL)
            break;
        if (ch == ':') {
            *pzDest = NUL;
            break;
        }
        pzDest++;
        pzSrc++;
    }

このエラーが発生する理由は何ですか?

4

4 に答える 4

12

NULLがあり、次にNULがあります。

NULL は stddef.h で定義されており、非常に広く使用されており、null ポインターへの参照です。

NUL は異なります。これは標準の ASCII 文字セットの最初の文字であり、さらに重要なことに、標準のマクロではありません。自分で定義する必要があるかもしれません。

NUL を定義するには、次のようにします。

#define NUL '\0'
于 2012-05-11T06:43:25.207 に答える
4

いいえ、それは標準ではありません。これをコードの先頭に追加するか、単に使用します0

#define NUL 0

NULL私はあなたがやっているので、あなたが探していないと推測しましたch == NUL

'\0'さまざまなテキストで、 と呼ばれることはかなり頻繁にありNULます。

于 2012-05-11T06:41:33.907 に答える
2

NULLはありませんNUL

編集

あなたが投稿したリンクを読みましたか?「NULLはNULではありません。NULはC ++で定義されたキーワードではありません」と非常に具体的に述べています

NULL は、ヌル ポインター用に定義されたマクロです。
NUL は、ASCII 文字セットの最初の文字の名前です。これはゼロ値に対応します。C には標準マクロ NUL はありません
が、それを定義することを好む人もいます。
数字の 0 は、10 進数で 80 の値に対応します。数字の 0 と ?? の値を混同しないでください。(ヌル)!
NULL は ((void*)0) として、NUL は ?? として定義できます。

于 2012-05-11T06:41:35.327 に答える