關於 define 定義的先後順序

2021-06-22 12:19:02 字數 686 閱讀 3459

#define定義先後順序

今天檢視**的過程中,看到如下巨集的定義 /*

* size of malloc() pool

*/#define cfg_malloc_len  (cfg_env_size + 1024*1024)

#define cfg_env_size  0x4000

給我的第一感覺就是,是不是其他地方有cfg_env_size這個巨集的定義,不應該cfg_env_size這個的定義是在cfg_malloc_len的後面,然後我在大的原始碼目錄結構下搜尋,確實有很多,把我給整暈了,後來想想,巨集的定義跟函式的定義是不一樣的。

巨集的定義是編譯器先展開巨集再編譯的,也就是說,編譯器會事先把出現巨集的地方全部替換掉,所以定義他們的先後順序就無關緊要了。

如果還不放心,寫一小段**如下:

#include

#define max_size max_test+1

#define max_test 2

int main(int argc,char *argv)

執行如下命令,對程式進行展開:

gcc -e main.c

出現如下的顯示

已經對巨集進行了替換

js函式執行先後順序

在js函式裡面想要呼叫另乙個函式,之前我的做法是 commutil.closewindow window.parent getparamslist retvalues 大致就是關閉當前視窗,並將當前視窗的值返回到新開啟的視窗,但是這樣的話它是先執行window.parent.getparamslis...

關於java的類例項化的先後順序

最近有同事在部署乙個舊系統的時候遇到問題,在本地部署是沒事的,但一到正式線上伺服器就報錯。報錯的大概意思就是某個類裡面的乙個靜態變數為空導致出現空指標異常。為了幫忙解決這個問題,我再詳細地深入 然後模擬實際情況建立如下類 1.定義了乙個載入配置檔案的類test1,使用spring註解 service...

Python變數的引用先後順序

python引用變數的順序 當前作用域區域性變數 外層作用域變數 當前模組中的全域性變數 python內建變數 一 global global關鍵字用來在函式或其他區域性作用域中使用全域性變數。但是如果不修改全域性變數也可以不使用global關鍵字。gcount 0 defglobal test p...