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

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;
}
...全文
333 12 打赏 收藏 转发到动态 举报
写回复
用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需要它
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 在Qt框架中,QSerialPort类被视为一个关键组件,用于执行与串行端口之间的通信任务,它具备多样化的功能,涵盖了串口的开启与关闭操作,以及波特率、数据位、停止位和奇偶校验等参数的设定,同时还包括数据的发送和接收功能。在标题和描述中提及的“Qt5的QSerialPort类通过信号槽实现串口读写”,这代表了一种在Qt程中普遍采用的事件驱动策略,借助信号槽机制,能够便捷地管理串口数据的传输与接收。 1. **QSerialPort类的基础操作**: - 初始化阶段:必须构建一个QSerialPort实例,并为其指定串口名称,例如"/dev/ttyUSB0"。 - 参数配置:利用`setPortName()`、`setBaudRate()`、`setDataBits()`、`setParity()`、`setStopBits()`、`setFlowControl()`等方法,依据具体需求对串口参数进行配置。 - 串口开启/终止:借助`open()`方法启动串口,通过`close()`方法终止串口。务必验证`isOpen()`的返回状态,以确保操作的有效性。 2. **信号槽机制的应用**: - 信号的生成:QSerialPort类中定义了若干信号,诸如`readyRead()`表明有数据可读,`error()`指示出现错误,`bytesWritten()`显示数据已传输等。当这些事件发生时,将触发相应的信号。 - 槽函数的关联:相应地,可以将这些信号与自定义的槽函数相连接,比如,当`readyRead()`信号被激活时,可以调用一个用于处理读取数据的函数。 3. **串口数据...

4,469

社区成员

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

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