2010-05-12 53 views
1

有人可以给我解释一下关于重新定义在C:重新定义使用C

是有可能做这样的事情

typedef struct NumberContainer* ptrNumberContainer; 

,之后

typedef struct NumberContainer* ptrCall; 

可能它会导致在一些问题连锁?在此先感谢

+0

在标题拼写错误。 – Viet 2010-05-12 10:52:04

+1

请注意,这与eclipse没有任何关系 - 我再次删除了标签。 – 2010-05-12 11:06:23

回答

5

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

-1

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

#define FOOBAR 1 
#undef FOOBAR 
#define FOOBAR 2 
+0

对不起,也许我没有正确解释,但尼尔巴特沃斯理解我的意思 – lego69 2010-05-12 10:48:55

+0

可以你也给你的解释? – lego69 2010-05-12 10:49:10

+0

@Marcelo当然,你也可以重新定义结构,函数等错误吗? – 2010-05-12 10:53:49

1

当然这是可能的。定义两个不同的类型名称意味着相同的事物。

0

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

ptrNumberContainer p1; 
ptrCall p2; 

那么这些将工作:

p1 = p2; 
*p1 = *p2;