巨集在C 中的替代解決方案

2021-07-13 12:26:26 字數 714 閱讀 6008

1. 常量定義

例如:

#define num 100
替換為

const

int num = 100;

const常量放在標頭檔案中,也不必擔心存在多個例項的問題,對於const修飾的變數,編譯器一般也會對其進行優化,不會出現多重定義的問題。

c語言中還有乙個特殊的常量定義:null。其一般的定義為 #define null 0,指標的內容卻是乙個整型,這不符合常理。所以在c++11中使用nullptr代替了null。

2. 函式定義

巨集只是在**中做字串替代展開,所以,用巨集定義的函式,實際上並沒有減少**的體積。

#define square(x) (x*x)
替換為

inline int square(int

value)

或者

template t>

inline t square(t& value)

3. 型別重定義
#define unit_32 unsigned int
替換為

typedef

unsigned

int unit_32;

for迴圈替代解決方案

幾種遍歷方法中for執行最快,它沒有任何額外的函式呼叫棧和上下文。但在實際開發中我們要結合語義話 可讀性和程式效能,去選擇究竟使用哪種方案。下面來看for foreach map for.in for.of五種方法現場battle。for我是最早出現的一方遍歷語句,在座的各位需稱我一聲爺爺。我能滿足...

Swift中巨集 define的替代方案

我們在swift中已經沒有 define這種巨集定義了,那麼替代方案有哪些呢?1 let宣告常量 let is ios7 uidevice.currentdevice systemversion as nsstring doublevalue 7.0當然這種代替方案 只適用於一般的常量巨集定義,如果...

在nginx中x sendfile解決方案

例如下面的 12 3 4 5 6 7 8 9 10 11 12 13 使用者身份認證,若驗證失敗跳轉 authenticate file determine file 讀取檔案內容 content file get contents file 傳送合適的 http 頭 header header c...