gpt4 book ai didi

c++ - 编译时断言数据类型大小

转载 作者:IT老高 更新时间:2023-10-28 23:14:50 26 4
gpt4 key购买 nike

我想对 C/C++ 项目中的数据类型大小执行编译时检查,并在意外不匹配时出错。简单

#if sizeof foo_t != sizeof bar_t

不编译 - 声称 sizeof 不是正确的编译时常量。

所需的平台范围 - 至少是带有 Win32/64 的 Visual C++ 和 x86/amd64 上的 GCC。

EDIT:编译时,不一定是预处理器。只是不是运行时错误。

EDIT2:代码假定 wchar_t 为 2 个字节。如果不小心用 4 字节 wchar 编译,我想要一个编译错误。

最佳答案

在 C++11 中你可以使用静态断言

static_assert(sizeof(foo_t) == sizeof(bar_t), "sizes do not match");

如果是 C++11 之前的版本,那么你可以使用 boost static assert 宏

http://www.boost.org/doc/libs/1_48_0/doc/html/boost_staticassert.html

BOOST_STATIC_ASSERT(sizeof(int)==sizeof(unsigned));
BOOST_STATIC_ASSERT_MSG(sizeof(int)==sizeof(unsigned), "sizes do not match");

关于c++ - 编译时断言数据类型大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8388385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com