测试一小段C代码

lbh2001 2008-08-26 08:36:35

#include <stdio.h>
void wrap(void);

int main(void)
{
void test();
printf("main\n");
wrap();
return 0;
}

void wrap(void)
{
test();
}

void test(void)
{
printf("test\n");
}

以上代码在VC++6.0中编译正常
但从概念上来说是错误的
猜测VC++6.0隐式对test声明指定文件作用域
但实际上是块作用域,所以wrap中的引用是错的
不知VS2003、VS2005、VS2008中的编译情况如何
GCC也测试一下
...全文
141 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbh2001 2008-08-26
  • 打赏
  • 举报
回复
多谢2楼
有其他编译器的朋友请测试一下
yyyapple 2008-08-26
  • 打赏
  • 举报
回复
声明是扩大作用域,上述只扩大到main函数中,对wrap函数定义来说不可见,
要么在函数前面,扩大到文件结尾,要么在函数中

void wrap(void)
{
void test(void);
test();
}

void test(void);
void wrap(void)
{
test();
}
yyyapple 2008-08-26
  • 打赏
  • 举报
回复
vs2005 编译不过

void wrap(void)
{
test();
}
中 test()不可见
ww2734 2008-08-26
  • 打赏
  • 举报
回复
warp中有引用吗?没看出来

70,020

社区成员

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

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