ソースコードの文字にアクセントを付けて、同等のユニコードに置き換えてみました。実際の非ASCII文字を使用すると、プログラムはコンパイルされて正しく動作しますが、これが移植性に影響を与える可能性があるのではないかと心配しています。同等のUnicodeを使用しようとすると、警告が表示されます。大文字と小文字のラベルの値が型の最大値を超えています。または警告:文字定数が型に対して長すぎ、プログラムの実行時に大文字と小文字が一致しません。
for(int i = 0; i < ent->d_namlen; i++)
{
switch(ent->d_name[i])
{
case 'á' : //0x00E1
...
}
}
entはstruct dirent *ent
、呼び出し元の関数から渡されます。
、、をcase 'á' :
試した代わりに、一重引用符なしですべてを試しました。その場合、コンパイルされません(たとえば、\ u00E1がこのスコープで宣言されていないことを示します)。case '0x00E1' :
case L 'u00E1 :
case \U000000E9 :
case '\u00E1' :