gpt4 book ai didi

c - 为什么我可以使用不存在的类型的 typedef?

转载 作者:太空狗 更新时间:2023-10-29 14:54:57 25 4
gpt4 key购买 nike

以下小程序在 gcc 上编译并运行良好:

#include <stdio.h>
#include <stdlib.h>

typedef struct foo dne;

int main(int argc, char *argv[]) {
dne *dne_var = malloc(sizeof(void*));
printf("%p\n", dne_var);
return 0;
}

为什么 typedef 有效?

最佳答案

线

typedef struct foo dne;

隐式声明一个(此时不完整)结构struct foo。指向不完整类型的指针是完整类型,例如它的大小是已知的,您可以声明该类型的对象。然而,struct foo 本身并不完整,除非您提供它的完整声明,例如

dne dne_var;

或者取消引用您的指针以访问结构的字段将是无效的。

关于c - 为什么我可以使用不存在的类型的 typedef?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25432427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com