【发布时间】:2010-10-07 14:58:06
【问题描述】:
我在我的项目中以这种方式使用结构:
typedef struct
{
int str1_val1;
int str1_val2;
} struct1;
和
typedef struct
{
int str2_val1;
int str2_val2;
struct1* str2_val3;
} struct2;
我是否有可能以某种方式破解这个定义,我只会在我的代码中使用类型,比如
struct2* a;
a = (struct2*) malloc(sizeof(struct2));
不使用关键字struct?
【问题讨论】:
-
我不确定你的问题是什么,你能详细说明你想要完成什么吗?我会把最后一行写成
a = malloc(sizeof *a); -
我解决了这个问题,我正在使用 typechange,因为在我的系统上有一个叫做 calloc1 的原始函数(是的,这是正确的)并且它返回 char*,但这没关系
-
那么你应该用一个返回
void *的函数来包装这个不正常的calloc1函数(或者只使用一个宏来执行此操作)。 -
永远不要对
malloc或calloc或realloc返回的值进行类型转换。它的可读性较差,唯一能产生影响的方法是如果你忘记了#include <stdlib.h>,在这种情况下你会想知道你忘记了它。