C中的重新定义

时间:2010-05-12 10:42:08

标签: c

有人可以解释一下C中的重新定义:

可以做这样的事吗

typedef struct NumberContainer* ptrNumberContainer;

之后

  typedef struct NumberContainer* ptrCall;

在连接过程中可能会引起一些问题吗?提前谢谢

4 个答案:

答案 0 :(得分:5)

不,这完全没问题 - 你有两个相同基础类型的同义词 - 这很常见。但是,通过使用typedef隐藏某事物是指针这一事实的做法在C中通常被视为不好的做法。

答案 1 :(得分:1)

当然有可能。定义两个不同的类型名称来表示相同的事物。

答案 2 :(得分:0)

在这种情况下,ptrCall实际上会引用与ptrNumberContainer相同的类型。我认为它们也兼容编译时间。所以你可以说,例如:

ptrNumberContainer p1;
ptrCall p2;

然后这些将起作用:

p1 = p2;
*p1 = *p2;

答案 3 :(得分:-1)

这不是重新定义。重新定义是指宏定义:

#define FOOBAR 1
#undef FOOBAR
#define FOOBAR 2