Chinaunix

标题: [c]为什么c标准不让这么写, 这么好的特点让c++包括了..... [打印本页]

作者: inet_addr    时间: 2012-05-22 17:40
标题: [c]为什么c标准不让这么写, 这么好的特点让c++包括了.....
for(int i = 0; i < max; i ++)
{
      ;
}

为什么c标准不让这么写, 这么好的特点让c++包括了.....
作者: 0xC1988    时间: 2012-05-22 17:44
和以下代码有什么差?这么写有什么作用?
  1. for(int i = 0; i < max; i ++);
复制代码

作者: 帅绝人寰    时间: 2012-05-22 17:48
我怎么看不懂你们在说什么
作者: inet_addr    时间: 2012-05-22 17:56
int main()
{
   for(int i = 0; i < 10; i++)
   {
      ;
   }

   return(0);
}


--------------------------------
$ cc t.c
t.c: In function 'main':
t.c:3: error: 'for' loop initial declaration used outside C99 mode





$

作者: aychxm    时间: 2012-05-22 18:17
0xC1988 发表于 2012-05-22 17:44
和以下代码有什么差?这么写有什么作用?

你这c代码能编译通过?
作者: Moon_Bird    时间: 2012-05-22 18:24
本帖最后由 Moon_Bird 于 2012-05-22 18:35 编辑

for(int i = 0; i < 10; i ++);      for 应该不能含变量申明吧, C99可以

作者: hbmhalley    时间: 2012-05-22 18:33
inet_addr 发表于 2012-05-22 17:56
$ cc t.c
t.c: In function 'main':
t.c:3: error: 'for' loop initial declaration used outside C99 mode

都告诉你了这在c标准里
作者: inet_addr    时间: 2012-05-22 19:00
hbmhalley 发表于 2012-05-22 18:33
都告诉你了这在c标准里


cc --std=c99 t.c

可是谁会记得这个选项啊, 这么难记, 那为什么g++就不用这么麻烦呢

你不认为c(起码gcc)在这里做的不够好吗
作者: 0xC1988    时间: 2012-05-22 19:38
inet_addr 发表于 2012-05-22 19:00
cc --std=c99 t.c

可是谁会记得这个选项啊, 这么难记, 那为什么g++就不用这么麻烦呢


这个不难吧
作者: pmerofc    时间: 2012-05-22 20:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: Sevk    时间: 2012-05-22 22:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: _Rayx    时间: 2012-05-22 22:21
C也蛋疼,C++也蛋疼。都是疼,哪种痛不是一样呢?
作者: ahui886    时间: 2012-05-22 22:40
楼主想说:白马非马?c99不是c标准?还是吐槽,不显性使用-std=c99就无法通过,如果是后者,那么就当我什么都没说
作者: pmerofc    时间: 2012-05-22 22:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: slucx    时间: 2012-05-22 23:10
pmerofc 发表于 2012-05-22 20:09
回复 1# inet_addr

写那个分号作甚?


见过的几个编译器,不写编译错误
所以感觉还是写上好,即使编译用不上
作者: pmerofc    时间: 2012-05-22 23:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: slucx    时间: 2012-05-22 23:22
pmerofc 发表于 2012-05-22 23:13
是吗?竟有这事儿?
哪个编译器这样?


好几个单片机上的编译器都是,好像有一个什么tcc特别恶心
作者: pmerofc    时间: 2012-05-22 23:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: 塑料袋    时间: 2012-05-22 23:59
本帖最后由 塑料袋 于 2012-05-23 00:00 编辑
pmerofc 发表于 2012-05-22 23:40
谢谢!
   应该算是不满足标准吧


刚打pao被玩弄归来,心情大爽,想调教调教你
作者: kzl0629    时间: 2012-05-23 08:29
这个特性好在哪里?
作者: ssffzz1    时间: 2012-05-23 11:04
rror: 'for' loop initial declaration used outside C99 mode


要是C出生的比较晚,可能也不需要C99了。 生的早也是错啊。
作者: hongshaohu    时间: 2012-05-23 17:36
从c99开始才支持for(int i = 0; i < 10; i++)这种写法。
gcc -std=c99 filename.c
c99之前可以写成
int i = 0;
for(; i < 10; i++) {
   ;
}
作者: haotq    时间: 2012-05-23 17:40
这算什么好特点
作者: Tim_08    时间: 2012-05-23 20:46
说什么东西
作者: pmerofc    时间: 2012-05-23 20:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: wolf5729    时间: 2012-05-23 22:03
这个,我就不争了。


------------------------------------
欢迎光临我的博客:www.danoking.com [DNK的博客]
作者: kycgjy    时间: 2012-05-24 11:35
围观一下,这个表示理解。有的环境下这么还是可以的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2