【发布时间】:2014-05-21 11:39:41
【问题描述】:
在下面的代码 sn-p 中,我收到此警告 - 第 25 行中的“警告:从不同大小的整数转换为指针” 这是我做的第三次打印,
printf("value of a thru struct ptr=%d\n",(unsigned char *)m_arr(ptr_ns_type)[0]);
我不明白这个警告,因为我在第二个 printf 中做了同样的事情(除了不使用宏)
printf("value of a thru ptr=%d\n",(unsigned char)*ptr);
我没有得到任何错误。谁能帮我理解这个警告吗?
谢谢, 巴德里。
#include<stdio.h>
struct ns
{
int i;
unsigned char a[2];
};
#define m_arr(whatever) ((struct ns *)whatever)->a
int main()
{
unsigned char arr[2];
unsigned char brr[2];
struct ns ns_type;
struct ns *ptr_ns_type;
arr[0]=192;
arr[1]=168;
brr[0]=172;
brr[1]=188;
ns_type.i=5;
ns_type.a[0]=brr[0];
ptr_ns_type = &ns_type;
unsigned char *ptr=arr;
printf("value of a=%d\n",arr[0]);
printf("value of a thru ptr=%d\n",(unsigned char)*ptr);
printf("value of a thru struct ptr=%d\n",(unsigned char *)m_arr(ptr_ns_type)[0]);
return 0;
}
【问题讨论】:
-
一次做一件事,你的代码会变得更清晰,更容易修复。