蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88
全部博文(311)
分类: C/C++
2010-01-26 21:18:06
|
这个代码1处有两个问题,在执行语句后面定义变量,然后使用变长数组.2处使用循环变量内部定义变量.
但很可惜在RHEL 下,用gcc 编译这个代码
gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)
gcc test.c -o test -std=c99 可以直接编译上述程序,这个不奇怪.
gcc test.c -o test -ansi 可以编译除了for内定义代码.
但是 gcc test.c -o test -std=c89 居然也难编译除了for内定义代码.这就有点过份了,c89好象从没有支持变长数组和变量吗?
在RHEL 5下使用gcc 4.1.1 编译如下语句
|
用gcc test.c -o test -ansi 编译后,运行测试.
[root@rhel5 test]# gcc test.c -o test -ansi [root@rhel5 test]# ./test A b=A sizeof(ary)=65 [root@rhel5 test]# ./test B b=B sizeof(ary)=66 |
结论,这种扩展还不要为好,大家都是把ansi 当成C89.但是把C99的东西强行当成C89,这种程序实际上移植有很大问题,在嵌入式领域优为如此.
|