wchar_t和多字节函数是ANSI C的一部分吗?

wchar_t和多字节函数是ANSI C的一部分吗?,c,ansi,wchar-t,c89,C,Ansi,Wchar T,C89,C99和C11支持wchar\u t和多字节函数。但我不确定ansic(1989) wchar\u t和多字节函数(mblen,mbstowcs,mbtowc,wcstombs)是ANSI C的一部分,对吗 我在Kernighan和Ritchie的书(C编程语言(第二版))中没有找到这些函数 wchar\u t是ANSI C(1989)的一部分。wchar\u t完全是C89标准。在我的版本中,wchar\u t在Kernighan和Ritchie书的§A2.5.2节中提到。名称wchar\u

C99
C11
支持
wchar\u t
和多字节函数。但我不确定
ansic
(1989)

wchar\u t
和多字节函数(
mblen
mbstowcs
mbtowc
wcstombs
)是ANSI C的一部分,对吗

我在Kernighan和Ritchie的书(C编程语言(第二版))中没有找到这些函数


wchar\u t
是ANSI C(1989)的一部分。

wchar\u t
完全是C89标准。在我的版本中,
wchar\u t
在Kernighan和Ritchie书的§A2.5.2节中提到。

名称
wchar\u t
在C89(和C99)标准中,但它不是langauge支持的类型。它是一种
typedef
,用于某些能够容纳所需位数的整数类型。C89 7.1.6[标准定义]规定:

wchar\u t
这是一种积分类型,其值的范围可以 表示最大扩展组的所有成员的不同代码 在支持的区域设置中指定的字符集;空值 字符的代码值应为零,且基本字符的每个成员 5.2.1中定义的字符集的代码值应等于其 值(当用作整数字符中的单个字符时) 不变的

这意味着,只要
未被
#包括
d,就可以在C89中将
wchar\t
定义为他们想要的任何内容

在C++中,这是非法的;wchar\u t是该语言中的一个关键字



至于您引用的多字节函数,它们似乎是C89的一部分。第7.10.7节[多字节字符函数]定义了
mblen
mbtowc
WCTOWC
,第7.10.8节[多字节字符串函数]定义了
mbstowcs
,以及
wcstombs
(全部在
中)。当然请注意,因为C89没有
const
,这些函数的
const
限定版本不可用。

但是为什么里奇在他的书中缺少多字节函数?我的副本中没有。。。想引用一下参考资料吗?我的副本6.1.1[关键词]中肯定没有列出。如果你使用链接到的amazon页面的“查看内部”功能进入图书索引的第272页,你会看到
wchar\t
它们可能被认为不重要,无法包含在书中<代码>wchar_t
也包括在内。我找不到多字节函数。A2.5.2中有一条注释让我相信(
wchar_t
)是在本书第二版中介绍的:“…添加
wchar_t
的主要目的是适应亚洲语言。”注:第一版是1978年出版的。@pmg:如果你这么相信它,那就找一个标准参考来支持它。@BillyONeal:我非常希望这本书有第一版。如果我找到一本书,我会尽量记得来这里更新这个问题。@pmg:这本书不重要;标准是这样的。也许你有这本书的第一版(1978年)?