C 我本人的世界卫生组织声明

C 我本人的世界卫生组织声明,c,linux,declaration,wchar-t,C,Linux,Declaration,Wchar T,请告诉我,我在哪里可以找到wchar\u t声明。 我使用linux,我认为它是32位的。 我需要声明这个类型,因为我不能使用standart库(它在我的启动程序中使用)。 文件/usr/include/wchar.h和/usr/include/linux/stddef.h 不要包含它的声明。 还有mbstate\u t呢?您不需要转到包含wchar\u t定义的文件。 在标准标题stdint.h中,可以找到有关特定实现中整数类型的信息 例如,常数WCHAR\u MIN和WCHAR\u MAX提

请告诉我,我在哪里可以找到wchar\u t声明。 我使用linux,我认为它是32位的。 我需要声明这个类型,因为我不能使用standart库(它在我的启动程序中使用)。 文件/usr/include/wchar.h和/usr/include/linux/stddef.h 不要包含它的声明。
还有mbstate\u t呢?

您不需要转到包含wchar\u t定义的文件。
在标准标题
stdint.h
中,可以找到有关特定实现中整数类型的信息

例如,常数
WCHAR\u MIN
WCHAR\u MAX
提供了有关
WCHAR\u t
值范围的信息

另一方面,如果
WCHAR\u MIN==0
,则
WCHAR\u t
是一个
无符号整数类型。否则,它是一个有符号整数类型(在这种情况下,可以预先检查条件
WCHAR\u MIN<0


要知道用于表示
wchar\u t
对象的字节数,您当然有
sizeof(wchar\u t)
表达式

如果不使用标准库,则不需要
wchar\t
。或者至少标准库的
wchar\t
理念对您来说并不重要。怎么可能呢?如果您想要广泛的字符处理,那么您需要编写它所需的任何函数,并且您可以自由地定义和使用最适合/方便的类型

不过,如果要进行系统调用,可能需要内核头。我无法想象你的启动程序如何避免这种情况,或者它为什么要这样做。您需要的那些类型将在内核头中定义。 您也不需要内核头:因为程序的目的是加载和启动内核,所以它不能依赖对内核的系统调用来完成它的工作


底线是,由于您必须提供硬件/固件无法直接提供的所有内容(不提供C接口),因此在您自己的代码之外没有与您相关的C定义。特别是,
wchar\u t
不是任何系统的特征;相反,它是特定C库的一个特征。同一个系统(包括您的系统)的不同C库可以自由地以不同的方式定义它。如果您选择实现自己的宽字符函数,那么选择从其他C库中提取的定义没有任何好处。

“32字节”对于数据类型来说听起来有点太大,IMO.^^I'v找到了有关mbstate_t的信息-它是结构
#include
我电脑上的stddef.h文件未完全安装合格的C编译器。C标准第6.4.4.4/11节规定,
wchar\u t
是由
定义的,我认为您不能在引导程序中进行系统调用。BIOS调用是可能的,但没有这些调用的任何头文件。是。系统调用不可用。我正在编写引导代码并使用一些标准库函数(我将实现它们)。