warning: multi-character character constant [-Wmultichar]

billpcs picture billpcs · May 13, 2014 · Viewed 6.9k times · Source

I want to have an Array of the Greek alphabet and this is what I do:

wchar_t pcletters[30] = {'α' , 'ά' , 'β' , 'γ' , 'δ' , 'ε' , 'ζ' , 'η', 'θ' , 'ι' , 'κ' , 'λ' , 'μ' , 'ν','ξ' , 'ο' , 'π' , 'ρ' , 'σ' , 'τ' , 'υ' , 'φ' , 'χ' , 'ψ' , 'ω', 'έ' , 'ή' , 'ί' , 'ό' , 'ύ' , 'ώ'} ;

I also include <locale.h> and have a line setlocale(LC_CTYPE, "") .

However I get the warning warning: multi-character character constant [-Wmultichar]. Moreover when I get to check if one of this letters is in a user input by doing :

if (userword[i] == pcletters[j]) {//do stuff} 

it does not seem to work. -Why do I get this warning ? -Is there a way to change pcletters in a way to be able to compare the userword[i] == pcletters[j]

Note: userword is defined like this: wchar_t userword[40] .

Answer

ecatmur picture ecatmur · May 13, 2014

Use wide character literals:

wchar_t pcletters[30] = {L'α' , ...
                         ^

Note that this will only work on platforms where the letters you are writing are a single wide character; this should work on Windows, where wchar_t is UCS-2.