检查C中对可变长度数组的支持

时间:2018-04-23 19:23:26

标签: c arrays c99

是否有标准宏来检查C代码中对可变长度数组的支持?它足以在所有广泛使用的编译器中检查c99(__STDC_VERSION__ >= 199901L)吗?

1 个答案:

答案 0 :(得分:7)

来自C11规范§6.10.8.3

  

以下宏名称由条件定义   执行:
  [...]

     

__STDC_NO_VLA__整数常量1,用于表示实现不支持可变长度数组或可变   修改后的类型。

因此,如果__STDC_VERSION__ > 201000L您需要检查__STDC_NO_VLA__

否则,如果__STDC_VERSION__ >= 199901L VLA应该有效,但如果编译器不兼容,您将收到编译时错误。