繁体   English   中英

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

[英]Static inline functions are greatly preferred over macros. What does this mean?

静态内联函数比宏更受青睐。 它们提供类型安全性。

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

这意味着最好(在标头中)执行以下操作:

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文件链接在一起时,不会出现任何“符号重新定义”冲突。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM