我有一个 Visual C++ 程序,它在一个线程中使用FILE* fp = fopen(...)
. 我希望该线程在另一个线程读取文件时阻塞事件对象,然后在完成时向阻塞的线程发出信号,然后关闭文件。因为fp
在线程之间共享,所以我将其声明为volatile FILE* fp
. 但是,fread()
不会接受 volatile 作为其FILE*
论点。FILE* fpLocal = fp;
我尝试在将调用的线程中使用本地指针,fread()
但这让我得到了这个:
Error: a value of type "volatile FILE*" cannot be assigned to an entity of type "FILE*"
自然地,这让我担心,也许我试图在一个线程中打开一个文件并在另一个线程中读取它开始时犯了一个错误,尽管我不明白为什么(还)。
有人可以帮我弄这个吗?为什么我不能将 a 分配volatile FILE*
给 a FILE*
?