我正在尝试从结构成员强制转换void*
。结构看起来像这样:
typedef struct{
int n;
void* string;
}query;
我想将成员string
强制转换为char*
并存储另一个字符串,比如说str2
,如下所示:
char* str2 = "hello";
(*(char*)q.string) = str2;
但是它一直告诉我这个警告:
example.c:在“ main”函数中: example.c:23:33:警告:赋值从指针进行整数转换而没有强制转换[-Wint-conversion] (*(char *)q.string)= str2;
为什么这不起作用?
答案 0 :(得分:2)
答案 1 :(得分:1)
警告是正确的。较新版本的gcc具有更有用的信息:
警告:从'char *'分配给'char'使 指针的整数,无强制转换[-Wint-conversion]
Work
您取消引用13 | (*(char*)q.string) = str2;
| ^
的{{1}}。为该char *
类型分配char
类型的char
。
Sourav Ghosh向您显示了,您可以这样做:
str2
如果您真的想使演员表明确:
char *
如您所见,您在错误的一侧进行了投射。