C中MINMAX的定义在哪里,如果有的话?

实现这些功能的最佳方式是什么,尽可能地通用和安全地键入?(首选主流编译器的编译器扩展/内置.)

推荐答案

如果有的话,MINMAX在C中的定义在哪里?

他们不是.

实现这些的最佳方式是什么,尽可能做到泛型和类型安全(最好是主流编译器的编译器扩展/内置).

作为函数.我不会使用像#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y))这样的宏,特别是当您计划部署代码时.您可以编写自己的代码,使用类似于标准fmaxfmin的代码,或者在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.

C++相关问答推荐

librsvg rsvg_handle_get_dimensions获取像素大小与浏览器中的渲染大小没有不同

C中的ATONE会扰乱SEN/CLUTE GMS应用程序中的其他字符串

在Windows上构建无聊的SSL x64

为什么下面的递归基本情况在C中不起作用?

将 typewriter LF打印到Windows终端,而不是隐含的CR+LF

如果包含路径不存在,我的编译器可以被配置为出错吗?(GCC、MSVC)

我的程序在收到SIGUSR1信号以从PAUSE()继续程序时总是崩溃()

轮询libusb_pollfd struct 列表的正确方式是什么?

如何在C++中处理按键

如何编写一个for循环来计算C中各项的总和?

在C中包装两个数组?

当我用scanf(&Q;%S%S%S&Q;,单词0,单词1,单词2)输入多个单词时,除了最后一个单词外,每个单词的第一个字符都丢失了

C中的回文数字

从另一个宏函数调用C宏

try 查找带有指针的数组的最小值和最大值

向左移位3如何得到以字节为单位的位数?

STM32:代码的执行似乎取决于它在闪存中的位置

C 错误:对 int 数组使用 typedef 时出现不兼容的指针类型问题

'printf("%s", user_input)' 危险吗?

OpenGL 中的非渐变 colored颜色 变化