首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Peek函数误差

Peek函数误差
EN

Stack Overflow用户
提问于 2014-03-22 19:30:34
回答 5查看 76关注 0票数 0

嗨,我正在尝试编写一个peek函数,但是我对如何修复我收到的警告感到困惑。我的目标是返回一个空字符,如果大小为零,否则返回最后一个字符。

代码语言:javascript
复制
struct mystring
{
  char size;
  char capacity;
  char* data;
};
typedef struct mystring Mystring;


     char* mystring_peek(MYSTRING hString)
     {
       Mystring* string = (Mystring*) hString;
       if(string != NULL)
       {
         if(string->size != NULL)//line containing first warning
         {
           return &(string->data);//line containing second warning 
         }
     }
      return;
     }

使用gcc -Wall的错误/警告

代码语言:javascript
复制
   warning: comparison between pointer and integer [enabled by default]
   warning: return from incompatible pointer type [enabled by default]​
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-03-22 19:42:08

第一个警告是,正如编译器所说的,因为您比较了指针和整数。守则应改为:

代码语言:javascript
复制
if(string->size != 0)

第二个错误是简单的类型不匹配。当需要char**时,返回char*。你大概是说:

代码语言:javascript
复制
return string->data;

当然,编译器的对象是:

代码语言:javascript
复制
return;

毕竟,您确实承诺返回一个char*

人们还会对从MYSTRINGMystring*的演员阵容产生疑问。

票数 0
EN

Stack Overflow用户

发布于 2014-03-22 19:47:10

找到修改后的函数

代码语言:javascript
复制
  char* mystring_peek(MYSTRING hString)
  {
      Mystring* string = (Mystring*) &hString;
      if(string != NULL)
      {
         if(string->size != 0)
         {
            return string->data;
         }
      }

     return NULL;
 }
票数 1
EN

Stack Overflow用户

发布于 2014-03-22 19:40:00

为什么这条线

代码语言:javascript
复制
 Mystring* string = (Mystring*) hString;

它没有任何意义,因为hStringMystring类型的。

事情总有分崩离析的地方。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22582457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档