C ++:从wchar_t *转换为unsigned short *是否安全?

问题描述 投票:0回答:1

C ++:从wchar_t *转换为unsigned short *是否安全?

因为我使用的是MSXML2的SAXReader,所以我需要传递unsigned short *的一些方法。我需要传递的值是wchar_t,所以这样做是否安全?

c++ casting saxparser
1个回答
4
投票

一般来说,强制转换是不安全的,因为严格的别名规则禁止它。

但如果wchar_ttypedefunsigned short,你就会侥幸逃脱。如果是,你可以在编译时使用static_assert强制执行,基于值

std::is_same<whar_t, unsigned short>::value

请注意,这样的实现依赖于您的编译器没有正确实现标准:正式wchar_t具有相同的大小,签名和对齐作为整数类型之一,但是是一种不同的类型。“因此,typedef将不符合要求并且值断言应该总是失败。

参考:http://en.cppreference.com/w/cpp/language/types

© www.soinside.com 2019 - 2024. All rights reserved.