可以将wchar_t提升为wint_t吗?

时间:2016-11-23 06:40:53

标签: c standards wchar-t widechar c-standard-library

我看到glibc引用和C90修正案1之间的矛盾。

glibc引用的引用说wchar_t可能被提升为wint_t:

  

如果wchar_t定义为char,则由于参数提升,类型wint_t必须定义为int

但AMD1说:

  

目前,现有的实现可能有wchar_t为int和wint_t    long,默认促销不会将int更改为long。   基本上,这是应该的    to wchar_t和wint_t是typedef。因此,我们现在不会有wchar_t    晋升为wint_t。

有人知道哪一个是正确的吗?

标准是否保证在以下两个程序中转换为unsigned int和int是正确的? (我刚刚将wint_twchar_t替换为glibc中的实际含义) (我刚刚将wint_twchar_t替换为glibc中的实际含义)

#include <locale.h>
#include <wchar.h>
int main(void)
{
  setlocale(LC_CTYPE, "en_US.UTF-8");
  unsigned int wc;
  wc = getwchar();
  putwchar((int) wc);
}

-

#include <locale.h>
#include <wchar.h>
#include <wctype.h>
int main(void)
{
  setlocale(LC_CTYPE, "en_US.UTF-8");
  int wc;
  wc = L'ÿ';
  if (iswlower((unsigned int) wc)) return 0;
  return 1;
}

0 个答案:

没有答案