gpt4 book ai didi

c++ - clang 的 uint24_t 是如何工作的?我可以在 clang/LLVM 之外使用它吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:39:46 26 4
gpt4 key购买 nike

作为 GCC 用户,我刚刚注意到 clang 支持 uint24_t类型(它在他们的 stdint.h 中)。

这是如何运作的?我的意思是,它是纯粹在内部支持,作为一种语言扩展,还是像 C++ 类那样实现,具有超过 3 个字节或 16 位值和另一个 8 位值的抽象?并且 - 怎么可能通过 GCC 来“猛拉”这样的实现并自己使用它?

注意:

  • 我希望在现代 C++ 中有一个类似 uint24_t 的类(或更一般的 uint_t<N>);我的替代方案是自己动手。
  • 你可以s/uint/int/g;如果你喜欢这个问题。

最佳答案

这不是可移植的或标准的。它仅适用于 AVR(具有 24 位地址)和 GCC has it for that architecture, too (自 GCC v4.7 起)。

如果架构不支持原生 24 位整数,则不会定义它。

如果您查看 Clang's stdint.h header file ,您会看到只有在定义内部 __INT24_TYPE__ 符号时才会有条件地包含 24 位整数 typedef:

#ifdef __INT24_TYPE__
typedef __INT24_TYPE__ int24_t;
typedef __UINT24_TYPE__ uint24_t;
typedef int24_t int_least24_t;
typedef uint24_t uint_least24_t;
typedef int24_t int_fast24_t;
typedef uint24_t uint_fast24_t;
# define __int_least16_t int24_t
# define __uint_least16_t uint24_t
# define __int_least8_t int24_t
# define __uint_least8_t uint24_t
#endif /* __INT24_TYPE__ */

关于c++ - clang 的 uint24_t 是如何工作的?我可以在 clang/LLVM 之外使用它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41441724/

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