任何人都可以告诉我,我怎样才能看到typedef替换字符串。
实际上我们可以使用cc -E filename.c
看到预处理器替换。所以我希望看到typedef替换。
答案 0 :(得分:2)
这(以及-E
)取决于您使用的编译器。
那就是说,我怀疑任何编译器都可以这样做。与宏相反,typedef不仅仅是文本替换。
请注意,潜在的typedef扩展程序的输出不一定是有效的C代码,例如:实例相同的结构将变得不兼容。
答案 1 :(得分:1)
typedef不是宏。
-E是编译中的预处理器阶段,您将只能看到MACRO替换。
#define A int *
typedef int *B;
现在这意味着'A'出现的地方,它将被'int *'替换 - 普通字符串替换
然而,B是'int *'
所以当我输入:
A c, d;
B e, f;
-E阶段将向您显示已进行以下替换:
int *c, d;
B e, f;
所以:
c的类型为'int *'
d的类型为'int'
e是B类(与e的类型为'int *'同义)
f是B类型(与f的类型为'int *'同义)
HTH