微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C ++ for linux中的等效mmap是什么?

什么是与C ++等效的mmap ?

我有像下面的代码

LCDdata = mmap(NULL,iFrameBufferSize,PROT_READ | PROT_WRITE,MAP_FILE | MAP_SHARED,fb_fd,0);

LCDdata是unsigned char pointer , iFrameBufferSize是inttypes, fb_fd是static inttypes。

当我通过使用arm g++工具链编译它时,它给我错误,如下所示

qDebug()在Windows上不支持unicodestring

在Ubuntu上使用GLFW设置OpenGL NetBeans项目

打开其他应用程序后,在后台维护TCP连接8

使用opencv从帧创build一个divx编码的AVI

如何在Qt层次结构的根部件中获取鼠标按下的事件

error: invalid conversion from 'void*' to 'unsigned char*' [-fpermissive]

那么如何使用任何等效types的函数而不是mmap呢?

我应该包括哪个头文件? 那么这个新行的语法将会如何呢?

如何dynamic生成和运行本机代码

什么时候会eventfd_read()阻止?

针对Windows上的Linux进行交叉编译(链接输出文件不会在Linux上以可执行文件的forms运行,并且具有未定义的符号)

检查close()中的错误的原因是什么?

如何在Windows 8和10中枚举已安装的StoreApps及其ID

C ++等价于auto LCDdata = static_cast<unsigned char*>(mmap(...

在C ++中,我们倾向于只在初始化变量时才定义变量,因此我们通常不需要再指定类型。 在这里,我们不需要重复unsigned char* 。

C允许将void*分配给任何类型的指针而不用强制转换。 C ++没有。 C程序员已经抱怨了这么久( malloc是最常见的抱怨),但它不太可能改变。

解决方案是添加演员。 如果源代码需要编译为C,则使用C风格的类型:

LCDdata = (unsigned char*)mmap(...);

否则使用C ++强制转换

LCDdata = static_cast<unsigned char*>(mmap(...));

如果你想做更激烈的事情,你可以看看Boost Interprocess 。 那会给你RAII的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐