算法研发---对宏定义#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 ,很多问题可以从哲学中找到答案;保持清醒的头脑,不断给自己充电,你才会走的更远.................

你可能感兴趣的:(数据结构,类,程序员,C语言,宏定义)