指向C99之前运行时确定的大小的数组的指针

问题描述 投票:1回答:1

在C99之前,C标准是否允许在运行时确定的长度为[[指针]]的数组中定义或转换?我知道该标准不允许在C99之前使用可变长度的数组,但是对我来说,是否允许使用运行时确定的大小的数组的指针对我来说并不明显,因为编译器知道在编译时为指针分配多少内存,不像数组。

gcc 10.1.0允许使用它,即使使用-std=c90,但我很好奇标准是否允许它,而不是特定的编译器是否允许。 This question非常相似,但答案并未涉及标准。

这里是一个代码示例:

#include <stdio.h> int f() { int a; scanf("%d", &a) return a; } int main() { int dim1 = f(); int dim2 = 2*dim1; int (*p)[dim1][dim2]; // is this allowed pre-C99? return 0; }

在C99之前,C标准是否允许定义或转换为指向在运行时确定的长度数组的指针?我了解该标准不允许在C99之前使用可变长度数组,但是...
c standards variable-length-array pointer-to-array
1个回答
0
投票
这是一个约束冲突。合格的C89编译器必须对此程序发出诊断。
© www.soinside.com 2019 - 2024. All rights reserved.