0

在程序编译期间,主要分为三个阶段:

  1. 预处理(所有#include,#define等都被替换)
  2. 编译(生成目标文件)
  3. 链接(目标文件链接到可执行文件)

我的问题是关于typedef. 正如我在预处理文件输出中看到的那样,typedef输入的 ed 不会被实际类型替换。

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

4

2 回答 2

0

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

不,它们不是,因为它们只是一种类型的别名。

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

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

于 2013-05-02T08:13:29.757 回答
0

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

于 2013-05-02T08:03:15.500 回答