这么弱智的代码,缘何编不过,求助!!!

chxy85 2012-10-12 06:53:13
头文件:

#define STRUCT_DECL(name) \
typedef struct { \
}name


STRUCT_DECL(reg_t);


C文件
#include "test.h"


int main()
{
reg_t *reg;

(void *)reg = (void *)malloc(sizeof(reg_t)); \

return 0;
}
...全文
263 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Panda_熊猫 2012-10-24
  • 打赏
  • 举报
回复
#include <stdlib.h>

#define STRUCT_DECL(name) \
typedef struct { \
int i;\
}name


STRUCT_DECL(reg_t);



int main()
{
reg_t *reg;

reg = (reg_t *)malloc(sizeof(reg_t));

return 0;
}
xiaohu023 2012-10-24
  • 打赏
  • 举报
回复
高手高手之高高手。
chxy85 2012-10-15
  • 打赏
  • 举报
回复
7L说对了,但是这段代码以前是写在宏里面的。并且在NETBSD下编译通过的,因为我要移植到linux里面,报了lvalue的错误,不知道为啥BSD可以,这个和编译器有个么?
wukui1008 2012-10-15
  • 打赏
  • 举报
回复
顶7楼
Joseph_1118 2012-10-14
  • 打赏
  • 举报
回复
indeed
[Quote=引用 7 楼 的回复:]

C/C++ code
(void *)reg = (void *)malloc(sizeof(reg_t));

(void*)reg这个是一个right value,怎么可以做lvalue?去掉(void*),应该是
reg = (reg_t *)malloc(sizeof(reg_t));
[/Quote]
Linux-Torvalds 2012-10-13
  • 打赏
  • 举报
回复
(void *)reg = (void *)malloc(sizeof(reg_t));

(void*)reg这个是一个right value,怎么可以做lvalue?去掉(void*),应该是
reg = (reg_t *)malloc(sizeof(reg_t));
shaoxiaojing5193 2012-10-13
  • 打赏
  • 举报
回复


看了一下,代码是没问题的,就是malloc要包含头文件,reg_t 是结构体的别名,可以直接 reg_t *reg;
Devin_la 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
另外你的reg_t是个struct,
(void *)reg = (void *)malloc(sizeof(reg_t));
好像不能这么写
[/Quote]


我不知道楼主代码是要干什么 指针强制转换 是没有关系的 从目前看到的代码完全没问题
Devin_la 2012-10-12
  • 打赏
  • 举报
回复
#include <stdio.h> 加上这个就OK了 肯定可以通过编译
acabin 2012-10-12
  • 打赏
  • 举报
回复
另外你的reg_t是个struct,
(void *)reg = (void *)malloc(sizeof(reg_t));
好像不能这么写
acabin 2012-10-12
  • 打赏
  • 举报
回复
上一楼手误,包含了没
acabin 2012-10-12
  • 打赏
  • 举报
回复
stdlib.h编译了没
malloc需要它

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧