首页 文章

c,监视目录中的窗口中的更改 - 在此范围内未声明_tsplitpath_s

提问于
浏览
0

我需要构建一个 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 回答

  • 1

    首先,请确保您已包含 <stdlib.h> .

    我的精神力量表明这是遗产 tchar.h . 在这个时代,尽量避免使用"t" apis并专门使用Unicode:

    如果 lpDirlpDrive 和其他参数是ansi字符串(char *):

    _splitpath_s(lpDir, lpDrive, 4, NULL, 0, lpFile, _MAX_FNAME, lpExt, _MAX_EXT);
    

    如果它们是unicode(WCHAR *,wchar_t *,LPCWSTR等......):

    _wsplitpath_s(lpDir, lpDrive, 4, NULL, 0, lpFile, _MAX_FNAME, lpExt, _MAX_EXT);
    
  • 3

    该代码使用特定于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 .

相关问题