“变长”数组问题
来源:互联网 发布:在线p图软件 编辑:程序博客网 时间:2024/05/17 05:17
1. 变长数组
在Windows下用VS2008编译如下程序:
int main(int argc, char ** argv){ int length = 10; int a[length]; return 0;}
出现了如下错误:
error C2057: 应输入常量表达式
error C2466: 不能分配常量大小为 0 的数组
error C2133: “a”: 未知的大小
原因是C89规定数组定义时长度必须是常量。在C99中,局部数组是可以使用变量作为其长度的。但是VS2008编译器并不支持C99,所以编译会出错。
该程序在Linux下编译能通过,是因为Linux用GCC编译,而GCC支持C99。
C89 和 C99: C89是标准C(ANSI C), C99是在C89的基础上发展起来的,增加了基本数据类型,关键字和一些系统函数等。我们用的C是C89标准的,C++是C89编写的,目前支持C99比较好的是GCC,ICC次之,VC系列,包括VC2010都完全不支持C99。
GCC: (GNU Compiler Collection,GNU编译器集合)是一套由GNU工程开发的支持多种编程语言的编译器,是类Unix操作系统的标准编译器。
ICC (Intel C++ Compiler) : 美国 Intel 公司开发的 C/C++ 编译器,适用于 Linux、Microsoft Windows 和 Mac OS X 操作系统。
2. const 定义常量
const int LENGTH = 10;int a[LENGTH];
上述程序在 C++编译环境下编译是能通过的,但在C语言环境下编写这段程序,编译是通不过的。因为在标准C++中,const 定义的是一个常量,而在ANSI C中,这样定义的是一个只读变量,常量应该用#define宏定义,宏定义是预编译的,在预编译阶段,LENGTH都被替换为10了。
0 0
- “变长”数组问题
- 变长数组
- 变长数组
- 变长数组
- 变长数组
- 变长数组
- 变长数组
- 变长数组
- 变长数组
- 变长数组
- 变长数组
- 变长数组
- 变长数组
- C99中变长数组作为函数形参的问题
- C语言变长数组
- 变长数组和alloca
- PL/SQL变长数组
- C语言变长数组
- iOS截取视频某一帧图片(关键帧,AVAssetImageGenerator)
- spfa学习
- Fragment(五)Transaction 源码分析
- Java中浮点数的精度问题
- 一套房可以少奋斗多少年?
- “变长”数组问题
- linux目录作用详解(超详细,树状排版)
- Spring结合Hibernate配置C3P0数据源
- JAVASRIPT正则表达式
- 如何系统地学习数据挖掘
- 查找之二分查找
- poj3660Cow Contest
- Warning: strftime() [function.strftime]: It is not safe to rely on the system's timezone settings.
- CGI, FastCGI 理解