1

コンパイルしようとしているプログラムがありますが、コンパイル エラーが表示されます: 22 行目: "invalid operands to binary ==" さまざまな利用可能なソリューションを検索しましたが、問題の解決策が見つかりませんでした。コードは次のとおりです。

      #include <stdio.h>

        typedef struct nx_string_t
        {
            char *buf;  
        }nx_string_t;

        typedef struct nx_value_t
        {
            union
                {
                nx_string_t strng;
                }
        } nx_value_t;

        void func(nx_value_t *vale);

        void func(nx_value_t *vale)
        {
             if(vale->strng == NULL) // Error occurs here.
             {
                  printf("its done");    
             }
        }
4

2 に答える 2

4

メンバーstrngの型nx_string_tは であり、ポインターではありません。

内部のポインター要素と比較する必要があります。

if(value->strng.buf == NULL)
于 2013-02-15T09:38:12.457 に答える
2

比較は

if (vale->strng.buf == NULL)

vale->strngはポインタではない型nx_string_tであるため、 になることはありませんNULL。ただし、 である可能性のあるbufポインターメンバーがありますNULL

于 2013-02-15T09:38:00.133 に答える