В будущем любой, кто использует определения препроцессора для вызовов API, а не их прямую запись:
#define FindFirstFile FindFirstFileA/W
должен использовать препроцессор typedef в качестве параметра
typedef LPCTSTR LPC(W)STR
TCHAR
вызывается в WINAPI по определенной причине, люди!Если вы пишете код для переносимости в чьей-либо IDE (например, вставьте код на github).Используйте TCHAR
, LPCTSTR
будет работать с обоими FindFirstFileA/W
.
Или просто использовать явную нотацию API, FindFirstFileW
(в этом случае, когда вы ожидаете имена системных файлов, и еслиони имеют символы Юникода, а системная кодировка по умолчанию не установлена на правильную базу кода, вы получите символы «мусор / мусор» в выходном буфере).
Еще одно замечание, если вы работаетес системным файлом или системным путем всегда используйте Unicode
, поскольку ANSI
напрямую зависит от базы кода, а если вы работаете в арабской системе, путь к файлу будет запутан в ANSI
.