宏与宏函数

来源:互联网 发布:软件机器码修改 编辑:程序博客网 时间:2024/05/16 11:12

宏与宏函数

#include "stdafx.h"#if  01.宏的本质是,替换2.我们常将短小精悍的函数进行宏化,这样可以嵌入到代码中,减少调用的开销。但是代价就是,编译出的文件可能会变大3.尽量少用宏函数,能看的懂别人写的宏函数即可。C++中的 inline 函数(内联函数)己经取代了宏函数作用#endif//一行如果写不下需要换行写 必须加上\(续行符)来连接,//但是\前面一定不能有空格,否则会出错#define PI      3.141\5926#define  M   2+3#define  N  (2+3)//带参宏(宏函数)#define X(a,b)   a*b#define S(a,b)  ((a)*(b))//内部括号保证内部优先级 外部括号保证外部优先级//普通函数int  func(int i){return i *i;}//宏函数#define SQ(i)  ((i)*(i))//取消宏或宏函数//#undef + 宏或宏函数 从此以下都不能用了int _tmain(int argc, _TCHAR* argv[]){printf("%d\n", N * 3);printf("%d\n", M * 3);//没加括号的宏计算时相当于 2+3*3=11printf("%f\n", PI);int a = X(2 + 2, 2 + 3); //相当于 2+2*2+3=9int b = S(2 + 2, 2 + 3); // (2+2)*(2+3)=20printf("a=%d\n", a); printf("b=%d\n", b);printf("===========================================\n");int i = 1;while (i <= 5){printf("%d\n",SQ(i++) ); // printf("%d\n",((i++)*(i++)) );//开始i=1 1*1=1 然后1执行俩个++变为3 3*3=9 3执行俩++变为5 5*5=25//有的环境下会不一样 可能出现2  12  30}printf("===========================================\n");int p = 1;while (p<=5){printf("%d\n", func(p++));}return 0;}