如何确保以下程序不会导致这些错误?
warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
error: invalid operands to binary << (have ‘struct EXT_HDR *’ and ‘int’)
我的预期输出是:15
执行此操作的代码如下,我在其中使用指针和 #definetypedef struct
(以了解用法(。
#include <stdio.h>
typedef struct EXT_HDR {
int sar,rs;
}str;
#define output(O,I) (O |= ((str*)I->sar) | (((str*)I->rs)<<2))
int main(){
int out = 0;
str* val;
val->sar = 3;
val->rs = 3;
output(out,val);
printf("output= %dn",out);
return 0;
}
您正在尝试将int
转换为str *
((str*)I->rs)
在这里,你把I->rs
投向str *
,但你的意思是。
((str*)I)->rs
改变
#define output(O,I) (O |= ((str*)I->sar) | (((str*)I->rs)<<2))
自
#define output(O,I) (O |= (((str*)I)->sar) | (((str*)I)->rs<<2))