readdirectorychangesw 链接错误 undeclared identifier 解决方法
生活随笔
收集整理的這篇文章主要介紹了
readdirectorychangesw 链接错误 undeclared identifier 解决方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
From: http://aaronaddis.blog.163.com/blog/static/1270893292010431101042517/
今天在編程中遇到了文件監控的東西,在使用readdirectorychangesw 函數是老是報未定義的錯誤,看了MSDN,包含了windows.h和Winbase.h 兩個頭文件,但是還是一樣的錯。查找之后發現了解決方案和原理:
添加??#define?? _WIN32_WINNT?? 0x0500,且在windows.h頭文件定義之上。
即:
#define?? _WIN32_WINNT?? 0x0500
#include <windows.h>
原理:
1.ReadDirectoryChangesW函數定義在winbase.h頭文件中,,通常windows下編程一般都包含windows.h文件,而windows.h中包含了winbase.h,所以不用再包含winbase.h
2.在winbase.h中ReadDirectoryChangesW原型定義如下:
#if(_WIN32_WINNT >= 0x0400)
WINBASEAPI
BOOL
WINAPI
ReadDirectoryChangesW(
????HANDLE hDirectory,
????LPVOID lpBuffer,
????DWORD nBufferLength,
????BOOL bWatchSubtree,
????DWORD dwNotifyFilter,
????LPDWORD lpBytesReturned,
????LPOVERLAPPED lpOverlapped,
????LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
????);
#endif /* _WIN32_WINNT >= 0x0400 */
可以看出,這是一個條件編譯語句,只有定義了_WIN32_WINNT 這段代碼才會被編譯器加入,因此需要定義
_WIN32_WINNT ,其值應大于等于0x0400(好像0x0400表示Windows2000,0x0500表示Windows XP),且需要
定義在包含windows.h(或winbase.h)的定義語句之前
總結
以上是生活随笔為你收集整理的readdirectorychangesw 链接错误 undeclared identifier 解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jvm监控调优常用命令
- 下一篇: O_RDWR, O_CREAT等open