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