请告诉我,在哪里可以找到wchar_t声明。 我使用linux,我认为它是32位。 我需要声明这种类型,因为我不能使用标准库(它在我的引导程序中使用)。 文件/usr/include/wchar.h和/usr/include/linux/stddef.h 不要包含它的声明。 那么mbstate_t呢?
答案 0 :(得分:0)
您无需转到包含wchar_t定义的文件。
在标准头文件stdint.h
中,可以在特定实现中找到有关整数类型的信息。
例如,常量WCHAR_MIN
和WCHAR_MAX
会带来有关wchar_t
值范围的信息。
如果是WCHAR_MIN == 0
,那么wchar_t
就是unsigned integer type
。否则,它是signed integer type
(在这种情况下,它可以预先检查条件WCHAR_MIN < 0
)。
要知道用于表示wchar_t
对象的字节数,您当然可以使用表达式sizeof(wchar_t)
。
答案 1 :(得分:0)
如果您没有使用标准库,则不需要wchar_t
。或者至少标准图书馆对wchar_t
的想法对你来说并不重要。怎么可能呢?如果你想要广泛的字符处理,那么你需要编写它所需的任何函数,你可以自由地定义和使用最适合/方便的任何类型。
但是,如果您打算进行系统调用,则可能需要内核标头。我无法想象你的启动程序如何避免这种情况,或者它为什么要这样做。为此目的所需的那些类型将在内核头文件中定义。
您也不需要内核头文件:因为程序的目的是加载和启动内核,所以它不能依赖系统调用内核来完成它的工作。
最重要的是,由于您必须提供直接来自硬件/固件的所有内容(不提供C接口),因此您自己代码之外的C定义与您无关。特别是,wchar_t
不是任何系统的特征;相反,它是特定C库的特征。同一系统(包括您的系统)的不同C库可以不同地自由定义它。如果您选择实现自己的宽字符函数,那么从某些其他 C库中选择wchar_t
定义没有任何好处。