如果有的话,
MIN
和MAX
在C中的定义在哪里?
他们不是.
实现这些的最佳方式是什么,尽可能做到泛型和类型安全(最好是主流编译器的编译器扩展/内置).
作为函数.我不会使用像#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y))
这样的宏,特别是当您计划部署代码时.您可以编写自己的代码,使用类似于标准fmax
或fmin
的代码,或者在GCC statement expression中使用GCC's typeof修复宏(您也可以获得类型安全奖励):
#define max(a,b) \
({ __typeof__ (a) _a = (a); \
__typeof__ (b) _b = (b); \
_a > _b ? _a : _b; })
每个人都会说"哦,我知道双重判断,没问题",几个月后,你将会连续数小时调试最愚蠢的问题.
注意使用__typeof__
而不是typeof
:
如果您要编写的头文件 包含在ISO C中时必须正常工作 程序,编写
__typeof__
而不是typeof
.