以下小程序在gcc上编译并运行正常:
#include #include typedef struct foo dne; int main(int argc, char *argv[]) { dne *dne_var = malloc(sizeof(void*)); printf("%pn", dne_var); return 0; }
为什么typedef有效?
这条线
typedef struct foo dne;
隐式声明一个(此时不完整)结构struct foo
。 指向不完整类型的指针是完整类型,因此例如它的大小是已知的,您可以声明该类型的对象。 但是,在你提供完整的声明之前, struct foo
本身并不完整,例如
dne dne_var;
或取消引用您的指针访问结构的字段将是无效的。
以上就是c/c++开发分享为什么我可以使用不存在的类型的typedef?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/545747.html