算法研發---對宏定義#define相關研究



是否看到這樣的東東有種頭大了的感受:
  NTF_HR(m_pBaseClass->SetStr(m_hGPROG.hfCoef, (const float*)hfCoef) );
程序員

你必定會很好奇NTF_HR()這是什麼東西? 函數?不是吧,長得這麼「醜」?編程

若是你看到相似下面這樣一堆東東:
#ifndef _CRT_WPERROR_DEFINED
#define _CRT_WPERROR_DEFINED
 {_wperror(_In_opt_z_ const wchar_t * _ErrMsg);\
 _fgetwc_nolock(_Inout_ FILE * _File);\
 _fputwc_nolock(_In_ wchar_t _Ch, _Inout_ FILE * _File);\
 _ungetwc_nolock(_In_ wint_t _Ch, _Inout_ FILE * _File);}
有些大神寫的甚至不換行,很牛逼的樣子,看着都醉了;
數據結構


不廢話了,在這裏總結一些宏定義的做用以及用法(基本用法就不說了,大學C語言老師告訴你了):
宏定義目的是爲程序員在編程時提供必定的方便,並能在必定程度上提升程序的運行效率,可能剛開始接觸程序時候不太理解,不過隨着深刻,你會深入的感覺到它存在的合理性;
若是不理解上面的代碼:給你簡化一些,Give you a sample example as follow:
#define MYTEST(p) {int jj=p;if(jj>0) {cout << "我愛C++" << endl;}\
                             else if(jj<0) cout <<"不恨C++" << endl; \
                             else cout << "Fuck C++" << endl; }
若是你寫個測試函數,以下:
int main()
{
MYTEST(100);
MYTEST(0);
MYTEST(-100);
函數

}
Look the result,you will be excited to see it ,it's rather funny ,isn't it ?
偷偷告訴你斜線\無非就是個換行符;你會疑問這裏的p是個啥東西?呵呵,他就是一個代號,p是什麼類型,有你決定,它能夠是個句柄、任意類型的變量,也能夠是個其餘類型的數據結構;
測試


感悟:有時候不是困難來的太忽然,而是你沒有挑戰困難的勇氣;做爲 A Software Engineer ,不少問題能夠從哲學中找到答案;保持清醒的頭腦,不斷給本身充電,你纔會走的更遠.................spa

相關文章
相關標籤/搜索