打印

51中这样定义的宏有错吗?

[复制链接]
3401|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
doob|  楼主 | 2007-12-4 16:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
doob|  楼主 | 2007-12-4 16:48 | 只看该作者

AO,这个格式看样子要定义成函数才可以

使用特权

评论回复
板凳
孤星119| | 2007-12-4 17:17 | 只看该作者

有这种定义的么?

有这种定义的么?后面跟个简单的计算还可以.跟个函数也可以么?等待学习

使用特权

评论回复
地板
doob|  楼主 | 2007-12-4 17:18 | 只看该作者

呵呵,是不可以~~~~

使用特权

评论回复
5
eleclike| | 2007-12-4 18:02 | 只看该作者

lz的SomeNOP和( n)是连在一起的?

如果连在一起的话,你并没有定义一个完整意义的宏,如果分开的,你是定义了SomeNOP代替( n),而下面的程序也没用到SomeNOP,就更不会.....

使用特权

评论回复
6
computer00| | 2007-12-4 18:43 | 只看该作者

参考一下圈圈的这个宏定义~~~~

#define DispLineInf()      
{                          
 Prints(" in file "");    
 Prints(__FILE__);         
 Prints(", @ line ");      
 PrintLongInt(__LINE__-1); 
 Prints(" ");           
}


试试这样定义:

#define someNOP(n)     
{                      
 uint8 i;              
 for(i=0;i<n;i++)      
  _nop_();             
}

使用特权

评论回复
7
ayb_ice| | 2007-12-4 20:17 | 只看该作者

使用特权

评论回复
8
zmbnj| | 2007-12-4 20:36 | 只看该作者

11

注意换行符‘’,不要吝啬"{}""()"

使用特权

评论回复
9
eraychen| | 2007-12-4 21:07 | 只看该作者

00才是正确的

使用特权

评论回复
10
doob|  楼主 | 2007-12-5 13:47 | 只看该作者

谢谢21ic,谢谢各位,谢谢00

使用特权

评论回复
11
athlon64fx| | 2007-12-5 13:57 | 只看该作者

圈圈的宏还不够完善,应改为这样:

#define someNOP(n)          
do {                        
    uint8 i;                
    for(i=0;i<n;i++)        
        _nop_();            
} while(0)

使用特权

评论回复
12
dld2| | 2007-12-5 14:00 | 只看该作者

这个宏包含i变量,还是有问题的。

i在程序中随处都是。

使用特权

评论回复
13
athlon64fx| | 2007-12-5 14:10 | 只看该作者

re:

楼上先了解一下什么是“局部变量”。

使用特权

评论回复
14
疯子8972| | 2007-12-5 14:23 | 只看该作者

呵呵

认为 athlon64fx正解:)

使用特权

评论回复
15
dld2| | 2007-12-5 14:27 | 只看该作者

嘿嘿

脸红了。

使用特权

评论回复
16
hbicecream| | 2007-12-5 14:27 | 只看该作者

干嘛非用宏呢?用内联函数

使用特权

评论回复
17
computer00| | 2007-12-5 14:27 | 只看该作者

有大括号就行了吧,do while起啥作用的?

{}中的是局部变量,这个倒不用担心。 

不过有些编译似乎不支持在函数中间的{}声明变量,必须在函数开头定义。

使用特权

评论回复
18
athlon64fx| | 2007-12-5 14:30 | 只看该作者

re:

试试这样可以吗:

if(1)
    someNOP(2);
else
    someNOP(3);

使用特权

评论回复
19
xwj| | 2007-12-5 14:38 | 只看该作者

是啊,为什么非要用宏呢???

这里根本就不该用宏,难道你只想用一次?

LZ,去看看内联函数吧,关键字inline

使用特权

评论回复
20
athlon64fx| | 2007-12-5 14:39 | 只看该作者

只用大括号的话,会在 else 前多一个“;”

if(1)
    someNOP(2);  // 会产生错误
else
    someNOP(3);


只能这样写:

if(1) {
    someNOP(2);
} else {
    someNOP(3);
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

165

主题

1113

帖子

3

粉丝