在哪MIN
and MAX
如果有的话,是在 C 中定义的吗?
实现这些的最佳方法是什么,尽可能通用并安全地输入? (首选主流编译器的编译器扩展/内置函数。)
在哪MIN
and MAX
如果有的话,是在 C 中定义的吗?
他们不是。
实现这些的最佳方法是什么,尽可能通用和类型安全(首选主流编译器的编译器扩展/内置函数)。
作为函数。我不会使用像这样的宏#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y))
,特别是如果您计划部署代码。要么自己写,使用标准之类的东西fmax http://en.cppreference.com/w/c/numeric/math/fmax or fmin http://en.cppreference.com/w/c/numeric/math/fmin,或使用修复宏GCC 的 typeof http://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Typeof.html#Typeof(你也会得到类型安全奖励)GCC语句表达式 https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html#Statement-Exprs:
#define max(a,b) \
({ __typeof__ (a) _a = (a); \
__typeof__ (b) _b = (b); \
_a > _b ? _a : _b; })
每个人都说“哦,我知道双重评估,这没问题”,几个月后,您将连续几个小时调试最愚蠢的问题。
注意使用__typeof__
代替typeof
:
如果您正在编写一个头文件
包含在 ISO C 中时必须有效
程序,写__typeof__
代替typeof
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)