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

Pra*_*ami -1 c

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

这是什么意思?任何人都可以解释,如果可能的话,举个例子吗?

unw*_*ind 5

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

static inline int max(int a, int b)
{
  return a > b ? a : b;
}
Run Code Online (Sandbox Code Playgroud)

#define MAX(a, b) ((a) > (b) ? (a) : (b))
Run Code Online (Sandbox Code Playgroud)

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

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

函数处于比宏更高的级别,宏只是文本替换.

由于函数是static,它在C文件的外部不可见#include,因此当你用这个链接几个C文件时,不会有任何"符号重新定义"的冲突.

  • 但是经典的分号滑动实际上是你应该在宏上使用函数的另一个原因; 众所周知,C程序员到处写分号; (2认同)