我自己声明wchar_t

时间:2015-09-16 13:57:58

标签: c linux declaration wchar-t

请告诉我,在哪里可以找到wchar_t声明。 我使用linux,我认为它是32位。 我需要声明这种类型,因为我不能使用标准库(它在我的引导程序中使用)。 文件/usr/include/wchar.h和/usr/include/linux/stddef.h 不要包含它的声明。 那么mbstate_t呢?

2 个答案:

答案 0 :(得分:0)

您无需转到包含wchar_t定义的文件。
在标准头文件stdint.h中,可以在特定实现中找到有关整数类型的信息。

例如,常量WCHAR_MINWCHAR_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定义没有任何好处。