[英]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.