是否有标准宏来检查C代码中对可变长度数组的支持?它足以在所有广泛使用的编译器中检查c99(__STDC_VERSION__ >= 199901L
)吗?
答案 0 :(得分:7)
来自C11规范§6.10.8.3
以下宏名称由条件定义 执行:
[...]
__STDC_NO_VLA__
整数常量1,用于表示实现不支持可变长度数组或可变 修改后的类型。
因此,如果__STDC_VERSION__ > 201000L
您需要检查__STDC_NO_VLA__
。
否则,如果__STDC_VERSION__ >= 199901L
VLA应该有效,但如果编译器不兼容,您将收到编译时错误。