簡體   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