gpt4 book ai didi

c - 是否可以在编译期间动态创建等效的limits.h宏?

转载 作者:行者123 更新时间:2023-11-30 14:26:06 27 4
gpt4 key购买 nike

这样做的主要原因是尝试编写完美可移植的 C 库。几周后,我最终得到了常量,不幸的是,这些常量不是很灵活(使用常量来定义另一个常量是不可能的)。感谢任何建议或批评。

最佳答案

你的要求是不可能的。正如我之前所说,任何符合标准的 C 实现都将正确定义 limits.h。如果由于某种原因它不正确,请归咎于编译器的供应商。在编译时不可能对真正的限制进行任何“动态”发现,特别是如果您正在对嵌入式系统进行交叉编译,因此目标体系结构可能具有比编译系统更小的整数。

要动态发现限制,您必须在运行时通过位移、乘法或加法来完成,直到遇到溢出,但是这样您在内存中就有一个变量而不是常量,这将是显着的慢点。 (无论如何,这都是不可靠的,因为不同的体系结构使用不同的位级表示,并且算术有时会在限制周围变得有点奇怪,特别是对于有符号和抽象数字表示,例如 float )

只需使用 stdint.hlimits.h 中的标准类型和限制,或者尝试避免将限制全部推到一起。

关于c - 是否可以在编译期间动态创建等效的limits.h宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9624876/

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