gpt4 book ai didi

c++ - 检测并报告 typedef 错误……这是在做什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:17:02 25 4
gpt4 key购买 nike

我正在阅读有关通过使用固定宽度整数使代码更具可移植性的内容。我找到了 this帮助解释事情的文章,最后它建议使用这个匿名 union 来检测和报告 typedef 错误:

static union
{
char int8_t_incorrect[sizeof( int8_t) == 1];
char uint8_t_incorrect[sizeof( uint8_t) == 1];
char int16_t_incorrect[sizeof( int16_t) == 2];
char uint16_t_incorrect[sizeof(uint16_t) == 2];
char int32_t_incorrect[sizeof( int32_t) == 4];
char uint32_t_incorrect[sizeof(uint32_t) == 4];
};

我有点迷茫,我希望有人能解释这是在做什么?

最佳答案

它在滥用编译器,这就是它正在做的事情。

基本上 sizeof(type) == num 在编译时被评估,它会产生 01(假或真)。如果它为 0(它们都不应为 0),则会产生编译器错误,因为您不能声明大小为零的数组。

但如前所述,这对编译器来说是一种滥用,大多数健全的构建环境都会确保 typedef 对您来说是正确的(例如 autoconf 具有用于此类内容的内置宏)。

关于c++ - 检测并报告 typedef 错误……这是在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7019564/

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