当typedef成为实际类型时?

时间:2013-05-02 07:46:21

标签: c gcc compilation typedef

在节目编制期间,有三个主要阶段:

  1. 预处理(所有#include#define等已被替换)
  2. 编译(生成目标文件)
  3. 链接(目标文件链接到可执行文件)
  4. 我的问题是typedef。正如我在预处理文件输出中看到的那样,typedef ed类型不会被实际类型替换。

    什么时候发生?是否可以获得已经替换的类型?

2 个答案:

答案 0 :(得分:0)

简短回答:编译期间。
typedef是由编译器评估和理解的构造,因此编译器是发出将tyedef数据视为原始类型所需的代码的构造。 AFAIK,它是如何做到的是实现定义而非Unspecifed。但是,重要的是所有必要的事情。

答案 1 :(得分:0)

  

正如我在预处理文件输出中看到的那样,typedefed typed不会被实际类型替换。

不,他们不是,因为他们只是一个类型的别名。

  

什么时候发生?是否可以获得已经替换的类型?

这是一个实现细节,但由于需要编译typedef,所以它在编译过程中完成。使用编译器或预处理器无法获得真实类型。唯一的方法是手动替换或查看代码。