有没有办法为struct标签添加别名?如我所知,我有struct foo
并希望将其别名为struct bar
。我尝试了typedef struct foo struct bar
,typedef struct foo bar
等等...但它当然不起作用,因为foo
和bar
不是类型名称而是标签。
有没有办法在不为我的结构定义实际类型名称的情况下执行此操作(我希望将它们保留为标记,因为我偏向于使用struct
作为前缀 - 请不要对此进行宗教战争。
我的猜测是标签必须是唯一的,因此不可能直接但我好奇地无法在线找到参考(我发现所有的,不出所料,关于什么typedef结构意味着什么以及何时使用它的讨论,再一次不是我想要的。)
答案 0 :(得分:1)
您可以使用#define bar foo
来达到您想要的效果。不知道它对你来说是否足够好,但它可以正常工作,如下例所示:
#include <stdio.h>
struct foo {
int a;
};
#define bar foo
int main( ) {
struct bar x;
x.a = 10;
printf( "%d", x.a );
putchar( 10 );
return 0;
}
我可以告诉它有一个缺点,就是现在你可以定义一个标识符名为foo
的整数,但尝试使用名称bar
这样做会再次导致标识符名称为foo
的变量,因为这就是#define
的工作原理。
答案 1 :(得分:0)
您不能将typedef
一个结构转换为另一个结构,但可以使用typedefs
创建指向相同类型的sereval类型名称。
在类似情况下,通常要做的是使用相同结构的2 typedef
:
// the one and only struct definition
struct foo {
};
// define the new types which are equivalent to struct foo
typedef struct foo foo;
typedef struct foo bar;
代码可以foo
或bar
,但不能struct foo
。