【发布时间】:2021-06-21 06:47:35
【问题描述】:
当我在学习 C 时,我发现了这个程序:
#include<stdio.h>
struct Base
{
void* data;
}
int main()
{
struct Base* base = (struct Base*)malloc(sizeof(struct Base));
if(!base) return -1;
int value = 90;
base->data = value;
printf("%d", base->data);
return 0;
}
编译时,输出“警告:从 int 分配给 void* 使指针从整数而不进行强制转换” 我该如何解决这个问题?
【问题讨论】:
-
这不是您拥有的程序,它无法编译,因为您缺少分号。
-
如果不告诉您需要做什么,也无法解决问题。但在这种情况下,最明智的做法是使用
int data;而不是void *data。也永远不要转换malloc的返回值 - 你缺少#include <stdlib.h>,因此你的程序非常糟糕。 -
复制粘贴您在发布问题时正在编译的确切代码
-
通过
#include <stdlib.h>提供malloc声明 -
你在做什么没有意义。
int不是void *,尝试将整数值分配给void *是一场等待发生的灾难。 30 年前,将指针视为整数是很常见的,这导致了无数的编程错误。停止延续十年的不良做法。