发一个C语言里的细节问题

[复制链接]
 楼主| zheng522 发表于 2012-5-2 14:46 | 显示全部楼层 |阅读模式
#define uchar unsigned char
tepedef unsigned char uchar;
这两句话的细微差别,前几天忘了在那个论坛看过这个问题,感觉讲的很好。不知道有人了解吗,现在又记不太清,当时是为什么。
batsong 发表于 2012-5-3 11:35 | 显示全部楼层
define是字符替换

typedef是定义类型

typedef可以做到 typedef char (*pf_t)(void);这种复杂的,define就不行
sheenhero 发表于 2012-5-3 11:38 | 显示全部楼层
本帖最后由 sheenhero 于 2012-5-3 11:47 编辑

typedef unsigned char      uchar;
#define uchar                   unsigned char
typedef和define的作用是相似的(但实质却不一样),都是给unsigned char定义一个别名。

#define 是预编译时字符替换,不会检查语法错误
typedef 相当于定义一个新的类型,含有语法检查
hz-dz 发表于 2012-5-3 15:28 | 显示全部楼层
岗位要求:
1.大专以上学历;
2.精通C,C++JAVA .net或其它语言之一;
3.对日软件开发经验1年及以上;
4.有日语基础,达到日语3级水平或相当;
5.责任心强,工作细心,踏实认真.

岗位职责:
1.软件开发,测试。

按国家规定享受相关福利待遇!

有兴趣者请发简历至邮箱:hzyicha@126.com
联系电话:0571-28995532
3htech 发表于 2012-5-4 16:19 | 显示全部楼层
#define puchar unsigned char *
tepedef unsigned char * puchar;
这两句看起来一样,但是实际还是有一定差别的。

若有语句:puchar  x, y;  目的是定义两个uchar型的指针变量 x,y:

1 用define时,实际上编译器在编译阶段进行字符替换,替换后的语句成了
unsigned char * x, y;  注意注意,看到没有,只有x是uchar型指针,而y只是一个uchar的变量。

2 用typedef则不存在这个问题。因为这是一个新类型。

评分

参与人数 2威望 +2 收起 理由
hongdan0714jin + 1
ahgao + 1

查看全部评分

caoxinlei 发表于 2012-5-4 16:22 | 显示全部楼层
正在关注
firstblood 发表于 2012-5-8 14:14 | 显示全部楼层
讲的比较好的啊,耳目一新
okyouwin 发表于 2012-5-11 13:19 | 显示全部楼层
了解下。呵呵
vivilzb1985 发表于 2012-5-11 17:51 | 显示全部楼层
楼上的都高手啊,讲得很好啊
dfsa 发表于 2012-5-12 10:00 | 显示全部楼层
LZ可以再翻翻C++ primer这本书,上面写的很清楚
shenmu2012 发表于 2012-5-14 15:17 | 显示全部楼层
我也看下楼上推荐的这本书啊,谢谢提供信息
秋天落叶 发表于 2012-5-14 19:01 | 显示全部楼层
这个自己百度一下,应该不难找到详细的区别
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

823

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部