c - 静态内联函数比宏更受青睐。这是什么意思?

标签 c

Static inline functions are greatly preferred over macros. They provide type safety.

这是什么意思?有人可以解释一下吗?如果可能的话可以举个例子吗?

最佳答案

这意味着最好这样做(在标题中):

static inline int max(int a, int b)
{
  return a > b ? a : b;
}

#define MAX(a, b) ((a) > (b) ? (a) : (b))

由于前者的参数声明为 int,以及结果

(因此,如果您编写 max(3.14, "pi") 代码,您的 C 编译器会清楚地提示,但如果您使用宏,则错误会更加神秘或不被注意)

函数比宏处于更高的层次,宏只是愚蠢的文本替换。

由于该函数是静态,因此它在#include header 所在的C文件外部不可见,因此不会有任何“当您使用此方法将多个 C 文件链接在一起时,“符号重新定义”会发生冲突。

关于c - 静态内联函数比宏更受青睐。这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32524225/

相关文章:

c - 具有未初始化值的 zlib 库压缩

java - Textview 不显示 jni

c - 使用 C 语言绘制 x-y 图

c++ - 从 unsigned char 数组转换为 double

c - 找出 AF_UNIX + SOCK_SEQPACKET 最大消息大小

c - 倒数金字塔

c - 指向函数内部定义的常量字符串的全局字符指针

c - **(x+i) 和 *(*x+i) 之间的区别

c - C语言在二叉树中插入节点

c - 这行简单的 C 代码如何工作?