未记录的GCC扩展:结构中的VLA

Undocumented GCC Extension: VLA in struct

本文关键字:结构 VLA 扩展 记录 GCC      更新时间:2023-10-16

在阅读Clang文档时,我发现了以下有趣的花絮:[1]

clang不支持允许在结构中使用可变长度数组的gcc扩展。这有几个原因:第一,实现起来很棘手,第二,扩展完全没有记录,第三,扩展似乎很少使用。请注意,clang确实支持灵活的数组成员(结构末尾大小为零或未指定的数组)。

如何使用此扩展?我的理解是,在构造函数中使用alloca会导致堆栈指针在调用函数的末尾恢复,在本例中,调用函数将是构造函数,而不是在封闭结构的末尾。

谢谢你的帮助!

请参阅http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37428

而且http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42121

是的,这很奇怪。