1. 程式人生 > >高端技巧:怎樣使用#define定義變量

高端技巧:怎樣使用#define定義變量

有一個 add ret 由於 能夠 ext lan article pop

Introduction

想在源文件裏定義一個跟行號有關的變量,每次都手動輸入實在是太慢了。本文介紹怎樣使用宏定義來定義與行號有關的變量。

比如:我們想在源碼的第10行定義A_10這種一個整形變量。

用宏定義來完畢使命

在宏定義中,標準C/C++中給出了兩個特殊的操作符:#和##。

#是用於給紅參數加入雙引號;##用於鏈接兩個宏參數。既然能夠連接兩個宏參數,那我們就能夠鏈接一個首字母和行號作為一個總體了!

於是,我們就這樣寫:

#define MM(A) A##__LINE__
int main(){
int MM(C);
}

編譯後發現,我們定義的居然是C__LINE__這個變量。並非我們想要的!為什麽呢?
由於編譯器在預處理的時候並沒有把__LINE__展開。而是把它看成了一個總體!怎麽辦?
我們能夠通過再定義還有一個宏來先展開行號。然後在作為參數調用MM這個宏。

#define AA(B,C) B##C
#define BB(B,C) AA(B,C)
#define DD(A) BB(A,__LINE__)
int main(){
int DD(V);
}

OK了,我們成功定義了與行號有關的變量了!

‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); });

    高端技巧:怎樣使用#define定義變量