문제

In my code I have an array of 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"};

Later on I use the array in for loop. The problem is, that for this line I get following errors:

error: too many initializers for 'wchar_t [6]'
error: initializer-string for array of chars is too long [-fpermissive]

What's more, in for loop I have if conditional like this one:

if(GetFileAttributesW(paths[i])!=INVALID_FILE_ATTRIBUTES) {...}

And, again, I get an error here:

error: invalid conversion from 'wchar_t' to 'LPCWSTR {aka const wchar_t*}' [-fpermissive]

Strange enough, similar code used to compile correctly some months ago... What's the problem?

도움이 되었습니까?

해결책

You need

const wchar_t* paths[6] = ....

다른 팁

You need to use:

wchar_t *paths[6] = ...
        ^

A wchar_t is a single (wide) character, not a string of them.

So, if you want an array of wide strings, you should use the pointer variant.

The declarator wchar_t xyzzy[6] gives you six characters rather than six character arrays.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top