"In effect, typedef is like #define, except that since it is interpreted by
the compiler, it can cope with textual substitutions that are beyond the
capabilities of the preprocessor."
我们如何理解上述句子? 有两种关于typedef的用法,我无法理解:
1. typedef char Line[10];
2. typedef int (*p)(char*,char*)
在我看来,typedef A B表示B是A的别名,所以" typedef char Line [10]"行[10]是char的别名! ( p)(char ,char *)是int的别名!没有!显然不是!谁能解释一下呢?
答案 0 :(得分:0)
typedef
和宏之间的一个区别是typedef
可以包含宏不能包含的声明者信息。例如,假设你有:
int (*p)(int, double);
这声明p
是一个指向int
值函数的指针,该函数将int
和double
作为参数。
使用typedef
,您可以定义与此完全匹配的新数据类型:
typedef int (*t)(int, double);
然后,您可以使用以下内容获取p
的等效定义:
t p;
请注意,您仍然可以使用t
的完整声明符语法。例如,您可以:
t q[10];
这将声明一个包含t
类型的10个元素的数组。没有typedef
,这将是:
int (*q[10])(int, double);
答案 1 :(得分:0)
typedef char Line[10];
这定义了' Line'可用于创建10个字符的数组。例如:
Line L;
其中L是10个字符的数组。
typedef int (*p)(char*,char*);
为函数定义一个函数指针,该函数返回一个int,并接受(char *,char *)。这用于制作使用函数指针的代码,更具可读性。