LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 629|回复: 9

c小问题,求教:D

[复制链接]
发表于 2005-4-21 09:43:24 | 显示全部楼层 |阅读模式
有段小程序,总是报错。
main(int argc,char *argv[])
{
   if(){一个判断语句;}
   //问题在这
   FILE *infile;
   
}

为什么编译器老说FILE *infile;这句有问题呢?在tc,gcc,vc下都报错。但把FILE的定义放在第一句就没事了呢?在该处定义一个数组,但下面不使用的话也会报错。
发表于 2005-4-21 10:19:05 | 显示全部楼层
变量定义应放在一个程序段(由大括号括起来的一段程序)的开头(所有非变量定义的语句之前)。

不过你的gcc版本可能比较老吧?有的gcc是可以的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-21 10:26:11 | 显示全部楼层
感谢double兄!
   好象C++就没有这样的限制了。
回复 支持 反对

使用道具 举报

发表于 2005-4-21 19:22:08 | 显示全部楼层
c语言传统上必须把所有变量的定义放在函数开头,只是到了c99以后才能象c++那样在需要使用时才定义。
回复 支持 反对

使用道具 举报

发表于 2005-4-22 11:40:50 | 显示全部楼层
呵呵,把所有变量放在最开头是一个好的习惯
回复 支持 反对

使用道具 举报

发表于 2005-4-22 20:14:46 | 显示全部楼层
Post by popeyelin
呵呵,把所有变量放在最开头是一个好的习惯

不一定吧,如果函数很长,看代码时就不得不向前翻页去查找变量定义,也是比较麻烦的。
回复 支持 反对

使用道具 举报

发表于 2005-4-22 20:21:41 | 显示全部楼层
但函数很长可不是个好习惯,除非是连续若干个case
回复 支持 反对

使用道具 举报

发表于 2005-4-22 20:34:11 | 显示全部楼层
Post by doubleelec
但函数很长可不是个好习惯,除非是连续若干个case

函数太长当然不好,但一些没有太多意义的临时变量,如是循环用的i,j,k等,放在使用它们的地方再定义,会使代码看看上去更简洁些。
回复 支持 反对

使用道具 举报

发表于 2005-4-22 20:47:20 | 显示全部楼层
那倒是,以前用C++的时候很习惯写for(int i=0; ...); 后来不能这么写了,还颇有些不习惯。
回复 支持 反对

使用道具 举报

发表于 2005-4-24 18:28:57 | 显示全部楼层
我是用pascal 的, 对变量提前定义早以习惯, 反而比较喜欢这样。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表