How big is wchar_t with GCC?(GCC 的 wchar_t 有多大?)
问题描述
GCC 支持 -fshort-wchar 将 wchar_t 从 4 转换为两个字节.
GCC supports -fshort-wchar that switches wchar_t from 4, to two bytes.
在编译时检测 wchar_t 大小的最佳方法是什么,以便我可以将其正确映射到适当的 utf-16 或 utf-32 类型?至少,在 c++0x 发布并为我们提供稳定的 utf16_t 和 utf_32_t 类型定义之前.
What is the best way to detect the size of wchar_t at compile time, so I can map it correctly to the appropriate utf-16 or utf-32 type? At least, until c++0x is released and gives us stable utf16_t and utf_32_t typedefs.
#if ?what_goes_here?
typedef wchar_t Utf32;
typedef unsigned short Utf16;
#else
typedef wchar_t Utf16;
typedef unsigned int Utf32;
#endif
推荐答案
你可以使用宏
__WCHAR_MAX__
__WCHAR_TYPE__
它们由 gcc 定义.您可以使用 echo "" | 检查它们的值.gcc -E - -dM
They are defined by gcc. You can check their value with echo "" | gcc -E - -dM
由于 __WCHAR_TYPE__
的值可以从 int
到 short unsigned int
或 long int
,最好恕我直言,您的测试是检查 __WCHAR_MAX__
是否高于 2^16.
As the value of __WCHAR_TYPE__
can vary from int
to short unsigned int
or long int
, the best for your test is IMHO to check if __WCHAR_MAX__
is above 2^16.
#if __WCHAR_MAX__ > 0x10000
typedef ...
#endif
这篇关于GCC 的 wchar_t 有多大?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:GCC 的 wchar_t 有多大?
基础教程推荐
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- Windows Media Foundation 录制音频 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 从 std::cin 读取密码 2021-01-01