静态内联函数比宏更受欢迎。这是什么意思?

时间:2015-09-11 13:04:29

标签: c

  

静态内联函数比宏更受欢迎。他们   提供类型安全。

这是什么意思?任何人都可以解释并在可能的情况下提供一个例子吗?

1 个答案:

答案 0 :(得分:5)

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

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编译器会抱怨很清楚,但如果您使用宏,那么错误会更加神秘或不被注意)

函数的级别高于宏,这只是简单的文本替换。

由于该函数是static,因此在#include标题所在的C文件外部不会显示它,因此在没有任何“符号重新定义”冲突时你用这个链接几个C文件。