C++:从 wchar_t* 转换为 unsigned short* 是否安全?
C++: Is it safe to cast from wchar_t* to unsigned short*?
C++:从 wchar_t* 转换为 unsigned short* 是否安全?
因为我使用的是MSXML2的SAXReader,所以我需要传递unsigned short*它的一些方法。我需要传递的值是 wchar_t,所以做这个转换是安全的吗?
一般来说,转换是不安全的,因为严格的别名规则禁止它。
但如果 wchar_t
是 unsigned short
的 typedef
,你就可以逃脱惩罚。如果是,您可以在编译时根据
的值使用 static_assert
强制执行此操作
std::is_same<whar_t, unsigned short>::value
请进一步注意,尽管这样的实现依赖于您的编译器未正确实现标准:形式上 wchar_t
具有与其中一种整数类型相同的大小、符号和对齐方式,但它是一种不同的类型。”因此 typedef
不符合要求,值断言应该总是失败。
C++:从 wchar_t* 转换为 unsigned short* 是否安全?
因为我使用的是MSXML2的SAXReader,所以我需要传递unsigned short*它的一些方法。我需要传递的值是 wchar_t,所以做这个转换是安全的吗?
一般来说,转换是不安全的,因为严格的别名规则禁止它。
但如果 wchar_t
是 unsigned short
的 typedef
,你就可以逃脱惩罚。如果是,您可以在编译时根据
static_assert
强制执行此操作
std::is_same<whar_t, unsigned short>::value
请进一步注意,尽管这样的实现依赖于您的编译器未正确实现标准:形式上 wchar_t
具有与其中一种整数类型相同的大小、符号和对齐方式,但它是一种不同的类型。”因此 typedef
不符合要求,值断言应该总是失败。