1

我有一个我正在尝试编译的程序,但它向我显示了编译错误:在第 22 行:“二进制操作数无效 ==” 我搜索了各种可用的解决方案,但找不到我的问题的解决方案。代码如下:

      #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 回答