在C中,typedef
用于为另一个数据类型创建额外的名称(别名(,但不会创建新的类型,除非在数组类型的限定typedef的模糊情况下,typedef限定符被转移到数组元素类型。
如果我们有一个接受结构的函数,那么有可能传入typedef'dd类型吗?
例如,假设我们有:
typedef struct foo {
...
} Bar;
void func1(struct foo* arg0) {
// do something
}
有可能做到吗:
Bar bar0;
func1(bar0);
如果是,为什么可能?函数头指定它接受类型为struct foo*
的参数,而不是*Bar
struct foo
与Bar
兼容,因此可以使用其中一个来代替另一个,没有问题。
但是,这个func1(bar0);
是按值传递结构的,所以您会得到一个编译器错误。