关于qt在linux下使用open,write,close等文件操作的笔记


在看一些例程的时候发现 ,linux下qt使用文件操作的时候跟用c语言编写的函数不一样

linux下在qt中使用open

#include <fcntl.h>

fd = ::open(“path”,O_RDWR|O_NONBLOCK);

linux下在c中使用open

#include <fcntl.h>

fd = open(“path”,O_RDWR|O_NONBLOCK);

这是为什么呢?

还有如果想关闭刚才打开的fd 要使用close(fd)函数。但是qt下close()是关闭当前QWidget。

于是在我就去找了度娘,度娘不负我啊啊 啊啊 。找到了这样的解释:::

为了区分成员函数与全局函数,就要在全局函数前面增加"::"双冒号的标志。

这样就没有什么疑问了吧欧了。!!!

//度娘 搜到的 ^_^ 别人博客里的东东奥

错误原因是QWidget::close()与stdio.h中的文件关闭标准函数close()产生了歧义。所以可以参考下文链接中的解决方案。

http://bytes.com/topic/c/answers/856501-use-close-int-unistd-h-qt

另,林锐的《高质量C/C++编程》v1.0 p58,关于全局函数和类成员函数同名时,如何在类中使用全局函数的说明:
不论两个 Print 函数的参数是否不同,如果类的某个成员函数要调用全局函数 Print,为了与成员函数 Print 区别,全局函数被调用时应加‘::’标志。如
  ::Print(...);// 表示 Print 是全局函数而非成员函数
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值