typedef
是否由C&C的预处理器处理?
即typedef int foo_t;
与#define foo_t int
相同吗?
答案 0 :(得分:3)
不,因为这种类型的替代品不适用于更复杂的类型。例如:
typedef int[10] tenInts;
tenInts myIntArray;
myIntArray
的声明相当于:
int myIntArray[10];
这不适用于宏,因为它会变成:
int[10] myIntArray;
答案 1 :(得分:1)
否强>
举个例子,
typedef int *int_ptr1;
#define int_ptr2 int *
然后在:
int_ptr1 a, b;
int_ptr2 c, d;
a
和b
都是int
的指针。 c
也是指向int
的指针,但d
是int
。
答案 2 :(得分:1)
不,typedef
(是一个C 关键字)由编译器解释,而不是由预处理器解释,而#define
由预处理器处理。
答案 3 :(得分:0)
否 - C预处理器不处理typedef。 C预处理器无法识别C语言的语法;它不知道什么是和不是typedef。
#define严格地是" int"的文本替换。 for" foo_t&#34 ;;预处理器完成的替换发生在编译之前。