2者有什么区别?__INT_MAX__据我所知,它是在没有添加库的情况下定义的,并且INT_MAX是在 中定义的limits.h,但是当我包含该库时,INT_MAX它会以__INT_MAX__任何一种方式扩展(或者 VSCode 是这么说的)。limits.h当它扩展到另一种时,为什么我还要使用它?
dbu*_*ush 43
__INT_MAX__是一个实现定义的宏,这意味着并非所有系统都可能拥有它。特别是,GCC 定义了这个宏,但 MSVC 没有。
另一方面,INT_MAX它是由 C 标准定义的,并且保证出现在limits.h任何符合标准的编译器中。
因此,为了可移植性,请使用INT_MAX.
And*_*nle 15
当 limit.h 扩展为另一种时,为什么我还要使用它?
limits.h是标准的和便携式的。
C 语言的每个实现都可以自由地创建它认为合适的宏值INT_MAX。您看到的值__INT_MAX__是特定编译器的产物,甚至可能是您正在使用的编译器的特定版本。
Joh*_*man 11
为了补充其他答案,当您编写将在多个平台上运行的代码时,坚持标准确实值得。如果不这样做,当新平台出现时,您需要做很多工作来适应它,而最好的方法通常是更改它以使其符合标准。这项工作非常枯燥无味,值得通过从一开始就做正确的事情来避免。
我从事的数学建模工作最初是在 20 世纪 80 年代在VAX/VMS上编写的,早期支持多个 68000 个平台,包括Apollo/Domain。如今,它可以在 64 位 Windows、Linux、macOS、Android 和 iOS 上运行,而这些在它创建时都不存在。
| 归档时间: |
|
| 查看次数: |
6816 次 |
| 最近记录: |