有没有办法为结构体标记添加别名?例如,我有一个 struct foo 并希望将其别名为 struct bar。我尝试了 typedef struct foo struct bar
、typedef struct foo bar
等...但它当然不起作用,因为 foo
和 bar
不是类型名称,而是标签。
有没有一种方法可以在不为我的结构定义实际类型名称的情况下执行此操作(我想将它们保留为标签,因为我偏向于在它们前面加上 struct
前缀 - 请不要发生宗教 war 这个)。
我的猜测是标签必须是唯一的,因此不可能直接实现,但我奇怪的是无法在网上找到引用(不出所料,我找到的只是关于 typedef struct 含义以及何时/为何使用它的讨论,其中这又不是我要找的)。
最佳答案
您可以使用#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
的工作原理。
关于c - 结构体标签别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24219492/