Если _UNICODE
определена, то _TCHAR
является wchar_t
, так argv[0]
является wchar_t*
, который не конвертируется в char const*
(это тип первого параметра _splitpath_s
.
Список ошибок в Visual Studio показывает только . в первой строке каждой ошибки, для краткости полная ошибка компилятора, который можно найти в окне Output, является более информативным:
error C2665: '_splitpath_s' : none of the 2 overloads could convert all the argument types
[...]\stdlib.h(797): could be 'errno_t _splitpath_s<3,256,256,256>(const char *,char (&)[3],char (&)[256],char (&)[256],char (&)[256]) throw()'
while trying to match the argument list '(_TCHAR *, char [3], char [256], char [256], char [256])'
в полной погрешности, очевидно, й при единственном аргументе, тип может не совпадает с первым, так как остальные явно соответствуют.
Если вы собираетесь использовать _TCHAR
, используйте его и его друзей во всем мире. Ваши массивы должны быть массивами _TCHAR
, и вы должны использовать _tsplitpath_s
. С другой стороны, не следует использовать _TCHAR
вообще и просто использовать либо узкие или широкие строки символов на протяжении всего проекта (на Windows, широкие строки предпочтительнее)
Декларация plox! –
Является ли это сборкой UNICODE? Если это так, первым аргументом будет 'wchar_t', который даст такую ошибку. Вы также пропустили все аргументы 'size_t'. –
По крайней мере один из параметров, которые вы передаете _splitpath_s, является неправильным типом. –