找回密码
 注册
搜索
查看: 1464|回复: 10

[讨论] 宏的问题,不懂啊

[复制链接]
发表于 2006-7-31 15:58:00 | 显示全部楼层 |阅读模式
下面这段代码是没有问题的:
#ifdef MMI// added by sunyu, 2006/03/27
#ifndef U8
typedef unsigned char U8;
#endif
#ifndef U16
typedef unsigned short U16;
#endif
#ifndef U32
typedef unsigned long U32;
#endif
#ifndef S8
typedef char S8;
#endif
#ifndef S16
typedef short S16;
#endif
#ifndef S32
typedef long S32;
#endif
  
  #else
  
  typedef unsigned char       U8;
  typedef signed char         S8;
  typedef unsigned short      U16;
  typedef signed short        S16;
  typedef unsigned long       U32;
  typedef signed long         S32;
#endif如果改成这样就有问题了
#ifdef BIRD_BRIDGE_INCLUDED // added by sunyu, 2006/03/27
{
#ifndef U8
typedef unsigned char U8;
#endif
#ifndef U16
typedef unsigned short U16;
#endif
#ifndef U32
typedef unsigned long U32;
#endif
#ifndef S8
typedef char S8;
#endif
#ifndef S16
typedef short S16;
#endif
#ifndef S32
typedef long S32;
#endif
}
  
  #else
{
  
  typedef unsigned char       U8;
  typedef signed char         S8;
  typedef unsigned short      U16;
  typedef signed short        S16;
  typedef unsigned long       U32;
  typedef signed long         S32;
}
#endif
这是为什么啊,加了几个大括号而已
 楼主| 发表于 2006-7-31 16:01:00 | 显示全部楼层
问题补充:
错误提示U8,U16等没有定义
第一行代码都是#ifdef BIRD_BRIDGE_INCLUDED // added by sunyu, 2006/03/27
点评回复

使用道具 举报

发表于 2006-7-31 17:39:00 | 显示全部楼层
不明白您老加大括号意图所在!你的错误应该是一个syntax erro...
点评回复

使用道具 举报

发表于 2006-7-31 18:24:00 | 显示全部楼层
讨论的 没有意义啊
点评回复

使用道具 举报

发表于 2006-8-1 15:32:00 | 显示全部楼层
宏定义是预编译来做的事.

预编译不是C的complier,当然不认{}
点评回复

使用道具 举报

发表于 2006-8-4 10:42:00 | 显示全部楼层
不是宏的问题,是typedef的作用域的问题
这段代码能看懂吗
main()
{
   {
      int x;
      x ++; // it's ok
   }
   x++; //it's wrong, x is not defined
}
x是只能在定义的那个大括号里起作用,在外面是不可见得

typedef同样也有作用域的问题,你放到大括号里,就是定义成局部的了,外面当然访问不到了
点评回复

使用道具 举报

 楼主| 发表于 2006-8-10 16:00:00 | 显示全部楼层
佩服,多谢了
点评回复

使用道具 举报

发表于 2006-8-24 18:01:00 | 显示全部楼层
对啊,
有{},
一旦出了{},
内部的定义可就没了哦!
点评回复

使用道具 举报

发表于 2006-8-25 09:37:00 | 显示全部楼层
是作用域的问题
点评回复

使用道具 举报

发表于 2006-9-10 23:28:00 | 显示全部楼层
明白了
点评回复

使用道具 举报

发表于 2006-9-21 16:08:00 | 显示全部楼层
获益非浅,谢谢the_4400的精彩回答.
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-23 12:17 , Processed in 0.046457 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表