C ++:从wchar_t *转换为unsigned short *是否安全?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++:从wchar_t *转换为unsigned short *是否安全?相关的知识,希望对你有一定的参考价值。
C ++:从wchar_t *转换为unsigned short *是否安全?
因为我使用的是MSXML2的SAXReader,所以我需要传递unsigned short *的一些方法。我需要传递的值是wchar_t,所以这样做是否安全?
答案
一般来说,强制转换是不安全的,因为严格的别名规则禁止它。
但如果wchar_t
是typedef
的unsigned short
,你就会侥幸逃脱。如果是,你可以在编译时使用static_assert
强制执行,基于值
std::is_same<whar_t, unsigned short>::value
请注意,这样的实现依赖于您的编译器没有正确实现标准:正式wchar_t
具有相同的大小,签名和对齐作为整数类型之一,但是是一种不同的类型。“因此,typedef
将不符合要求并且值断言应该总是失败。
参考:http://en.cppreference.com/w/cpp/language/types
以上是关于C ++:从wchar_t *转换为unsigned short *是否安全?的主要内容,如果未能解决你的问题,请参考以下文章
无法在 c 中初始化数组 |警告:从 long 转换为 long unsigned
C++ fmtlib:如何将双精度转换为现有的 wchar_t 缓冲区?
错误 C2440:“默认参数”:无法从“const wchar_t [1]”转换为“BSTR”