c - 用于定义 min 函数的宏

标签 c

有这样的声明:

dist[i]= min(dist[i],dist[j]+edge[j][i]);

以下相应宏(C 语言)的安全性如何:

#define MIN(d[i], edge[i][j]) (d[i] < edge[i][j] ? (d[i]) : (edge[i][j]))

谢谢。

最佳答案

如果你想要一个最小定义宏,你需要这样做

#define MIN(a, b) (((a) < (b)) ? (a) : (b))

就像评论中所说,宏需要标识符而不是数组,甚至不需要变量。但这个宏是注释类型安全的。为什么不使用 fmax 和 fmin?更好,而且您不必创建宏

关于c - 用于定义 min 函数的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33055439/

相关文章:

c - 数组和 scanf 问题;与 scanf 一起使用的值

c - 在 Windows 上使用 __cdecl 了解 C 函数调用序言

c - 使用 fscanf 从文件读取时内存中的随机字符

c - ls命令如何找到硬链接(hard link)数?

c - 如何从打开的句柄中获取目录名称/路径

c - 这些函数和参数注释是什么?

c - 在 C 中对递增列表进行排序

c - 主进程退出后如何保持线程存活?

c - OpenSSL 1.0.2 和错误 "SSL_CTX_new:library has no ciphers"

c - 这些标志是什么意思? ^@