我需要构建一个 c++
程序来监视目录,以便更改其中的文件 . Obtaining Directory Change Notifications在许多类似于我的问题中被推荐 . 我试过那段代码,但第一个错误是
_tsplitpath_s未在此范围内声明
错误属于该行
_tsplitpath_s(lpDir, lpDrive, 4, NULL, 0, lpFile, _MAX_FNAME, lpExt, _MAX_EXT);
我使用 gcc version 5.1.0
并在CMD中通过以下命令运行代码
g++ file.cpp -o out
2 回答
首先,请确保您已包含
<stdlib.h>
.我的精神力量表明这是遗产
tchar.h
. 在这个时代,尽量避免使用"t" apis并专门使用Unicode:如果
lpDir
,lpDrive
和其他参数是ansi字符串(char *):如果它们是unicode(WCHAR *,wchar_t *,LPCWSTR等......):
该代码使用特定于Microsoft的stdlib.h实现扩展 . _splitpath_s and _wsplitpath_s仅在使用Microsoft编译器附带的stdlib.h实现时可用 . 它在GCC附带的stdlib.h实现中不可用 .
要解决此问题,您可以使用标准C filesystem library(可能不是immediately available with your compiler),也可以提供自己的
splitpath
功能实现 .或者,根本不要调用
_tsplitpath_s
,并确保始终将示例代码中的目录和驱动器名称传递给WatchDirectory
.