[英]How to cast void* struct members?
我正在尝试从结构成员投射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;
为什么这不起作用?
警告是正确的。 较新版本的gcc具有更有用的信息:
警告:从'char *'分配给'char'会使指针变为整数,而不进行强制转换[-Wint-conversion]
13 | (*(char*)q.string) = str2; | ^
取消引用char *
这给你一个char
。 给该char
类型分配str2
,它的类型为char *
。
正如Sourav Ghosh向您展示的那样,您可以执行以下操作:
q.string = str2;
如果您真的想使演员表明确:
q.string = (void*)str2;
如您所见,您在错误的一侧进行了投射。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.