为什么不能将易失性文件*分配给文件*?
Why can't volatile FILE* be assigned to FILE*?
我有一个Visual C++程序,可以在一个线程中打开一个文件,FILE* fp = fopen(...)
.我希望该线程在另一个线程读取文件时阻塞事件对象,然后在完成后向被阻止的线程发出信号,然后关闭文件。由于fp
在线程之间共享,因此我将其声明为 volatile FILE* fp
。但是,fread()
不会接受波动性作为其FILE*
论点。我尝试使用本地指针,线程中的FILE* fpLocal = fp;
将调用fread()
,但这让我明白了这一点:
Error: a value of type "volatile FILE*" cannot be assigned to an entity of type "FILE*"
当然,这让我担心,也许我尝试在一个线程中打开文件并在另一个线程中首先读取它而犯了一个错误,尽管我不明白为什么(还(。
有人可以帮助我吗?为什么我无法将volatile FILE*
分配给FILE*
?
为什么我不能为FILE*
分配volatile FILE*
?
因为C++有严格的类型检查,你不能分配彼此不匹配的类型。
如果是这种情况,则需要使用强制转换运算符,但重要的是要注意,不正确地使用它们也可能导致未定义的行为。
此行为与const
限定符的行为相同。
正如评论中已经提到的旁注,volatile
不是这里的方式。
相关文章:
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 使用 Libssh 将文件从服务器复制到客户端:分配文件复制目标路径时出现问题
- 如何通过一个循环将多个文件的内容分配给不同的类属性?
- 如何从文件中读取单词,将它们分配给数组并分析其内容?
- 如何从文件读取到动态分配的指向结构的指针链表中?
- 如何将 QML 文件分配给主窗口/应用程序
- 在读取大型 txt 文件时动态分配结构内的向量
- 字符串和输入文件,从包含字符串的 txt 文件中分配多个变量值
- 如何将文本文件的部分分配给数组的索引
- 动态分配读取 txt 文件的内存
- C++从 csv 文件中读取,然后将数据分配给类成员
- 我想从文本文件中获取信息并将该信息分配给类对象
- 从文件中分配变量,并使用定界符分配
- 如何将足够的数据从文本文件分配到char*中,然后将其复制到内存C 中
- 如何在 Linux 下为可执行文件分配堆栈
- 如何直接从文本文件分配变量
- 为什么不能将易失性文件*分配给文件*?
- 将数据从文件分配给矩阵C++
- 当提升内存映射文件分配的磁盘空间超过HDD上的可用空间时,如何检测错误
- 用c++在追加模式下打开一个文件进行写入会为整个文件分配内存吗