extern使用sizeof

在拥有多个文件的C项目之中,例如有三个文件,一个头文件palyer.h, 一个头文件的源文件 player.c ,一个 main.c ,在 player.c 中定义一个结构数组,然后,在 main.c 中使用sizeof(数组)/sizeof(元素)来获取其大小。但是, 如果该语句在main.c中使用会发生 “nvalid application of 'sizeof' to incomplete type 'struct player[]'” 错误,翻译过来就是 “  将'sizeof'应用到不完整类型'struct player[]'无效 ” ,原因是匿名长度的数组声明在有初始化值定义时会有编译器根据初始化列表确定其长度。但是对与extern文件外部的数组,只有链接时才能确定其大小,但sizeof运算符需要在编译时就确定对象的大小,于是错误就出现了。(player.c --> player.i--> player.s --> player.o --> 和其它文件进行链接,然后完成。)

那么,我的方法,是在 player.c 中建立一个变量,将 sizeof(数组)/sizeof(元素) 赋值给变量,然后再 main.c 中申明外部变量extren n就可以正确的使用该值了。原因是在同一文件下,在链接之前,既就已经确定了其大小(不知道如何处理)

猜你喜欢

转载自blog.csdn.net/qq_38035641/article/details/85702645
今日推荐