免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2516 | 回复: 8
打印 上一主题 下一主题

问一个巨大的printf的问题,VC60抱错,linux cc正常。汗。。。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-10 16:36 |只看该作者 |倒序浏览
#include <stdio.h>
int main(void)
{
    const char *mytal[5] = {
           "Adding numbers swiftly",
           "Multiplying accurately",
           "Stashing data",
           "Following instructions to the letter",
           "Understanding the C language"
    };

  //  printf("%s\n",mytal[1]);  // Q: 为什么打开注释后会报错

    const char ** pt = mytal;
      printf("%s\n",*(pt + 1));
   
      return 0;
}

附:
1. VC下报错信息:

--------------------Configuration: cStudy - Win32 Debug--------------------
Compiling...
test.c
D:\Program Files\Microsoft Visual Studio\MyProjects\cStudy\test.c(14) : error C2143: syntax error : missing ';' before 'const'
D:\Program Files\Microsoft Visual Studio\MyProjects\cStudy\test.c(15) : error C2065: 'pt' : undeclared identifier
D:\Program Files\Microsoft Visual Studio\MyProjects\cStudy\test.c(15) : error C2100: illegal indirection
Error executing cl.exe.

test.obj - 3 error(s), 0 warning(s)

2.  linux 正常:
[root@tomsui root]# cc -dumpversion
3.2.3
[root@tomsui root]# cc test.c
[root@tomsui root]# ./a.out
Multiplying accurately
Multiplying accurately
[root@tomsui root]#


指点12,不胜感激。多谢先。

论坛徽章:
0
2 [报告]
发表于 2007-09-10 16:38 |只看该作者
把.c 改成 .cpp编译
相同问题前面已经有过了

论坛徽章:
0
3 [报告]
发表于 2007-09-10 16:48 |只看该作者
VC的C前端问题,  所有定义必须放在块的最前面, cc 没问题其前端是多遍扫描, 这个问题更编译器有关

论坛徽章:
0
4 [报告]
发表于 2007-09-10 16:52 |只看该作者
多谢, 改成cpp后确实没问题了。

可以再问一句为什么.c就出问题么? 什么原因导致?

我回翻和搜索了printf相关的帖子,没能找到你说的那篇。C初学,多谢指点了。

论坛徽章:
0
5 [报告]
发表于 2007-09-10 16:57 |只看该作者
C语言,很多编译器,所有变量定义应该放在所有语句前面,

论坛徽章:
0
6 [报告]
发表于 2007-09-10 16:57 |只看该作者
原帖由 Guang-Yuan.Wang 于 2007-9-10 16:48 发表
VC的C前端问题,  所有定义必须放在块的最前面, cc 没问题其前端是多遍扫描, 这个问题更编译器有关


谢谢回复,多少明白些。不全懂。有时间我再补编译器相关知识。谢谢你。

论坛徽章:
0
7 [报告]
发表于 2007-09-10 17:04 |只看该作者
原帖由 tomsui 于 2007-9-10 16:36 发表
#include
int main(void)
{
    const char *mytal[5] = {
           "Adding numbers swiftly",
           "Multiplying accurately",
           "Stashing data",
           "Following instruc ...

你这个信息是怎么查看的?我编译时只报1个错误 0个警告。没有你这个详细信息................................我比你还新手些

论坛徽章:
0
8 [报告]
发表于 2007-09-10 17:08 |只看该作者
原帖由 tomsui 于 2007-9-10 16:57 发表


谢谢回复,多少明白些。不全懂。有时间我再补编译器相关知识。谢谢你。

意思就是VC必须定义放在块前面,GCC增加了扫描的功能了,就不管你在哪,它都能找到你了,大概是这个意思吧................VC毕竟太老了

论坛徽章:
0
9 [报告]
发表于 2007-09-10 17:54 |只看该作者
简单的说就是VC6遵循的C89标准,而不是目前更多采用的C99标准。
看一下两个标准的区别就能明白这些了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP