【问题标题】:C Programming pointer cast Error - assignment makes integer from pointer without a castC编程指针强制转换错误 - 赋值从没有强制转换的指针生成整数
【发布时间】:2015-06-06 08:56:14
【问题描述】:

请您帮我解决以下演员表错误。这是我的代码:

int (*hook_parse) (netsnmp_session *, netsnmp_pdu *,u_char *, size_t);
.
.
netsnmp_pdu* tpdu=NULL;
.
.
char buf[65537]="", sep='|', sep1[]="bc_sep1";
.
.
buf[tpdu->community_len] =sep;
buf[tpdu->community_len] =sep1;   //This Line gives error

我得到的错误是:

api.c:: warning: assignment makes integer from pointer without a cast

对于 sep 我没有收到这样的错误,但是对于字符串 sep1,我遇到了上述错误。

【问题讨论】:

  • int netsnmp_pdu * ; that 究竟应该是什么?你的意思是int *netsnmp_pdu; 吗?或者typedef int *netsnmp_pdu;?无论如何,sepcharsep1char[8],它们在类型上并不是表达式(或其他任何东西)的同义词。
  • 它到底是哪一行给出了警告? community_len 声明为什么?请详细说明。
  • 这是因为buf[tpdu->community_len]char,所以用sep 分配它也是char(类似类型)是可以的。但是sep1char*
  • 您需要再编辑一次;您告诉我们触发错误的行应该在做什么。你想用那行代码做什么?
  • 无论你做什么,不要添加演员表来消除警告。

标签: c pointers casting type-conversion


【解决方案1】:

buf 是一个字符数组。 sep 是一个字符。 sep1 是一个字符数组。

buf[x] 是数组中的一个元素(一个字符)。

您可以将字符 (sep) 分配给字符数组元素。 您不能将另一个数组 (sep1) 分配给字符数组元素。

【讨论】:

  • 不,你不能。 buf[x]char 因此你必须在里面放一个字符。 sep1 不是字符。目前尚不清楚您希望它做什么。
猜你喜欢
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-29
相关资源
最近更新 更多