c - 结构体标签别名

标签 c struct

有没有办法为结构体标记添加别名?例如,我有一个 struct foo 并希望将其别名为 struct bar。我尝试了 typedef struct foo struct bartypedef struct foo bar 等...但它当然不起作用,因为 foobar 不是类型名称,而是标签。

有没有一种方法可以在不为我的结构定义实际类型名称的情况下执行此操作(我想将它们保留为标签,因为我偏向于在它们前面加上 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/

相关文章:

c++ - C、C++中的中断机制

c - 编写一个C程序,使用for循环从字符串中提取字符串的一部分

c - Linux 上的存档文件在哪里?

javascript - 通过 Emscripten 在 Javascript 中进行结构操作

c - 按值填充值 a char *

c++ - BeautifulSoup 的 C/CPP 版本,特别是在处理格式错误的 HTML 方面

c - 混合使用 mmap(2) 和 malloc(3) 的安全方法需要 : the result of mmap(2) must be continuous

c - 不同结构的数组

将指针的结构信息转换为数组

c - 访问结构或 union 中的填充是否安全?