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

来源:互联网 发布:网络电视怎么调节亮度 编辑:程序博客网 时间:2024/06/04 23:33


在看一些例程的时候发现 ,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 是全局函数而非成员函数
原创粉丝点击