发新帖我要提问
12
返回列表
打印
[C语言]

看不懂的C语言define和typedef

[复制链接]
楼主: impig33
手机看帖
扫描二维码
随时随地手机跟帖
21
c语言编译第一遍 预处理: 把*.c文件读到内存,把#开头的都替换了,比如define和include的都替换成具体的内容。
c语言编译第二遍 编译:    把预处理之后的文件,分析语法树,产生二进制代码。
c语言链接:  把编译之后的obj二进制代码中的变量的名称用一个地址替换,把调用的函数名用另外一个地址替换。

详细如下图所示:


使用特权

评论回复
22
小将wzj| | 2018-3-26 14:49 | 只看该作者
就是宏定义,替换而已

使用特权

评论回复
23
2101419675| | 2018-3-31 11:52 | 只看该作者
宏只是简单的替换,typedef可用为变量类型取个别名。

使用特权

评论回复
24
impig33|  楼主 | 2018-5-13 22:09 | 只看该作者
wkshengren 发表于 2018-2-5 08:45
#define 是在编译时替换,可以做任何替换
#typedef 是定义新的类型,只能定义类型,但是不是简单替换,有的 ...

第二行这个 #typedef 多打了一个#吧?

使用特权

评论回复
25
impig33|  楼主 | 2018-5-14 12:07 | 只看该作者
linqing171 发表于 2018-3-5 22:48
c语言编译第一遍 预处理: 把*.c文件读到内存,把#开头的都替换了,比如define和include的都替换成具体的内 ...

另一个回答:

怎样理解c语言的#define和typedef定义?
https://www.zhihu.com/question/277022427/answer/391154011

使用特权

评论回复
26
wkshengren| | 2018-5-21 09:43 | 只看该作者
impig33 发表于 2018-5-13 22:09
第二行这个 #typedef 多打了一个#吧?

啊,多打了一个,谢谢

使用特权

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

本版积分规则