- 论坛徽章:
- 0
|
原帖由 okyzx 于 2007-7-27 18:01 发表
#define AllocRound( x ) ( ( ( ( x ) + 3 ) >> 2 )
这是带参数的宏定义。
定义一般形式:#define 宏名(形参字串表) 宏串
带参的宏引用:宏名(实参字串表)
其中:
1)形参字串应是宏串的子字串,长度可为1或更大;
2)实参字串应与形参字串个数相同;
带参的宏展开过程:
在宏串替换宏引用的过程中,将宏串从左到右
逐一展开,遇到与形参相同的字符串,则用对应的
实参字符串顶替,遇到其它字符则按顺序正常展开。
举个程序的例子吧!
#include <stdio.h>
#define SWAP(a,b) t=b;b=a;a=t
void main()
{ int a,b,t;
printf("Input two integers a,b:");
scanf("%d,%d",&a,&b);
SWAP(a,b);
printf("Now,a=%d,b=%d\n",a,b);
}
运行结果如下:
Input two integers a,b:3,4↙
Now,a=4,b=3
到了这里应该能够明白了吧。
还有“>>”是右移的符号;“<<”是左移的符号。
写到这里,我想提下意见。
当涉及到某放面的问题的时候,我希望大家一起将这类问题搞个透彻。而不是草草回答。
大家想一想C/C++中的问题虽然很多,但是只要我们每个人发现个把问题,然后共享。
你说咱中国人的C/C++技术,能不世界一流吗?
说到这里可能有的人说:靠,我一点技术全告诉了别人,那别人技术超过了我。我怎么混饭吃啊?
哎。。。。。
我们中国人啊!也不知道是谁发明了这句话:教会了徒弟饿死了师傅。
对于这种思想我想说几句:舍得舍得,不舍哪来得。我就不相信一个人全靠自己能将C/C++吃透。
也许自己以为理解的东西,其实理解错了,或理解得不透彻。可能带着这中错误思想在做工程的过程中
,出现了严重的错误。那才会影响自己的前途了。要是说出来,大家一起讨论,我想自己应该会有
意想不到的收获。
就说到这里吧,废话说了一大箩筐。也不知道会不会有些影响。 |
|