在使用extern类型的变量时,可以不考虑类型?

xuechengw 2005-06-17 10:13:36
比如file1.c
char test[] = {0x00, 0x01 ......};

file2.c
extern char test; // ok
extern char *test;//ok
extern int test;// ok
extern void* test;//ok

在使用时比如:
extern char test;
// tmp 指向数组的地址
char* tmp = &test;

这和文件内部使用数组的方法完全不同
char a[] = {0x00, 0x01 ......};
char* b = a;// 而不是 b = &a;

请赐教!

...全文
358 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogdo 2005-06-20
  • 打赏
  • 举报
回复
C语言是强类型语言,当然要有定义类型了!
mostideal 2005-06-19
  • 打赏
  • 举报
回复
mark!!
  • 打赏
  • 举报
回复
learning
wolfzxq 2005-06-17
  • 打赏
  • 举报
回复
你在file2中这样写:extern char test[]; 就可以和内置类型一样使用了,
比如:char *temp = test;
for(int i = 0; i < sizeof(temp)/sizeof(temp[0]); ++i)
printf(temp[i]);
  • 打赏
  • 举报
回复
C里连接不会出错地,C++写成 extern "C" 也不会出错地,不过运行会出错地鸟。
zhousqy 2005-06-17
  • 打赏
  • 举报
回复
比如:
extern char[] test;
char* tmp = test; //这样是不行的.
zhousqy 2005-06-17
  • 打赏
  • 举报
回复
类型要匹配.
robinzsy 2005-06-17
  • 打赏
  • 举报
回复
在编译时没有问题,在链接时会出错。
foochow 2005-06-17
  • 打赏
  • 举报
回复
mark!
younggundog 2005-06-17
  • 打赏
  • 举报
回复
extern char test; //只是声明 test 变量在以后一定会定义.
char test;//定义 test变量
char* tmp = &test;
//ok

sea2011 2005-06-17
  • 打赏
  • 举报
回复
领教了,谢谢各位

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧