【发布时间】:2011-02-06 13:24:29
【问题描述】:
有什么区别
void *bytes = alloca(size);
和
char bytes[size]; //Or to be more precise, char x[size]; void *bytes = x;
...其中 size 是一个变量,其值在编译时未知。
【问题讨论】:
-
答案主要取决于
size是否是编译时常量。是吗? -
不,对于所有意图和目的,size 是函数的参数
-
没关系。默认情况下,Apple 使用支持两者的
--std=gnu99。alloca()是 GNU 扩展,可变长度数组是符合标准的 C99 特性。 -
@Matt B.:Apple 与这些有什么关系?
-
@Billy:这个问题被标记为
objective-c。我知道 Mac 开发并不是 Obj-C 的唯一用途,但这是该语言最有可能的应用。我的观点是size不必与 C99/gnu99 保持一致,并且它是 Xcode 中的默认模式。对我之前的评论的一个小的(稍微不相关的)更正是 s/Apple/Xcode/。
标签: c objective-c objective-c++ alloca