是否有标准宏来检查C代码中变量长度数组的支持?它足以在所有使用的编译器中检查C99(__STDC_VERSION__ >= 199901L
(?
来自C11规范§6.10.8.3
以下宏名称有条件地定义 实施:
[...]
__STDC_NO_VLA__
整数常数1,旨在表明该实现不支持可变长度或可变的长度阵列 修改类型。
因此,如果__STDC_VERSION__ > 201000L
您需要检查__STDC_NO_VLA__
。
否则,如果__STDC_VERSION__ >= 199901L
VLA应该有效,但是如果编译器不合格,您将遇到编译时间错误。