在我的代码中,我有一个wchar_t数组:
wchar_t paths [6] = {L"C:\\Program Files\\SomeAppsSuiteFolder1", L"C:\\Program Files\\SomeAppsSuiteFolder2", L"C:\\Program Files (x86)\\SomeAppsSuiteFolder1", L"C:\\Program Files (x86)\\SomeAppsSuiteFolder2", L"C:\\SomeAppsSuiteFolder1", L"C:\\SomeAppsSuiteFolder2"};
稍后我在for
循环中使用该数组。问题是,对于这一行,我得到以下错误:
error: too many initializers for 'wchar_t [6]'
error: initializer-string for array of chars is too long [-fpermissive]
更重要的是,在for
循环中我if
有条件地像这样:
if(GetFileAttributesW(paths[i])!=INVALID_FILE_ATTRIBUTES) {...}
而且,我再次收到错误:
error: invalid conversion from 'wchar_t' to 'LPCWSTR {aka const wchar_t*}' [-fpermissive]
奇怪的是,几个月前用于正确编译的类似代码......问题是什么?
答案 0 :(得分:6)
你需要
const wchar_t* paths[6] = ....
答案 1 :(得分:3)
您需要使用:
wchar_t *paths[6] = ...
^
wchar_t
是一个单(宽)字符,而不是它们的字符串。
因此,如果你想要一个宽字符串数组,你应该使用指针变体。
声明者wchar_t xyzzy[6]
为您提供了六个字符,而不是六个字符数组。