次の2つのプログラムでキャストがwint_t
とwchar_t
になることが保証されていますか?`wint_t`と` wchar_t`にキャストする方法は?
#include <locale.h>
#include <wchar.h>
int main(void)
{
setlocale(LC_CTYPE, "");
wint_t wc;
wc = getwchar();
putwchar((wchar_t) wc);
}
-
#include <locale.h>
#include <wchar.h>
#include <wctype.h>
int main(void)
{
setlocale(LC_CTYPE, "");
wchar_t wc;
wc = L'ÿ';
if (iswlower((wint_t) wc)) return 0;
return 1;
}
wint_t
はsigned int
、及びWEOF == ((wint_t)-1)
であり、(この 仮想的な実装はBMPに制限されている)wchar_t
がsigned short
である場合を考えます。次に(wint_t)U+FFFF
はWEOF
と区別できない です。はい、U+FFFF
は予約済みのコードポイントですが、 はまだ衝突しています。
既存の実装の徹底的な監査なしでは、これが決して実際には起こらないと私は誓いたくはありません。
はあなたが記述環境にもMay wchar_t be promoted to wint_t?
wint_tについて言及する標準はありません。 – gnasher729