I installed this. Like vararrays, it should be migrated into Autoconf, which is also on my list of things to do.
2006-11-06 Paul Eggert <[EMAIL PROTECTED]> * MODULES.html.sh (Core language properties): New module flexmember. * modules/flexmember, m4/flexmember.m4: New files. Index: MODULES.html.sh =================================================================== RCS file: /cvsroot/gnulib/gnulib/MODULES.html.sh,v retrieving revision 1.158 diff -u -r1.158 MODULES.html.sh --- MODULES.html.sh 6 Nov 2006 18:21:35 -0000 1.158 +++ MODULES.html.sh 6 Nov 2006 21:58:05 -0000 @@ -1704,6 +1704,7 @@ func_echo "$element" func_begin_table + func_module flexmember func_module vararrays func_end_table Index: modules/flexmember =================================================================== RCS file: modules/flexmember diff -N modules/flexmember --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ modules/flexmember 6 Nov 2006 21:58:05 -0000 @@ -0,0 +1,20 @@ +Description: +Flexible array member support + +Files: +m4/flexmember.m4 + +Depends-on: + +configure.ac: +AC_C_FLEXIBLE_ARRAY_MEMBER + +Makefile.am: + +Include: + +License: +GPL + +Maintainer: +Paul Eggert, Jim Meyering Index: m4/flexmember.m4 =================================================================== RCS file: m4/flexmember.m4 diff -N m4/flexmember.m4 --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ m4/flexmember.m4 6 Nov 2006 21:58:05 -0000 @@ -0,0 +1,48 @@ +# Check for flexible array member support. + +# Copyright (C) 2006 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# Written by Paul Eggert. + +AC_DEFUN([AC_C_FLEXIBLE_ARRAY_MEMBER], +[ + AC_CACHE_CHECK([for flexible array member], + ac_cv_c_flexmember, + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include <stdlib.h> + #include <stdio.h> + #include <stddef.h> + struct s { int n; double d[]; };]], + [[int m = getchar (); + struct s *p = malloc (offsetof (struct s, d) + + m * sizeof (double)); + p->d[0] = 0.0; + return p->d != (double *) NULL;]])], + [ac_cv_c_flexmember=yes], + [ac_cv_c_flexmember=no])]) + if test $ac_cv_c_flexmember = yes; then + AC_DEFINE([FLEXIBLE_ARRAY_MEMBER], [], + [Define to nothing if C supports flexible array members, and to + 1 if it does not. That way, with a declaration like `struct s + { int n; double d@<:@FLEXIBLE_ARRAY_MEMBER@:>@; };', the struct hack + can be used with pre-C99 compilers.]) + else + AC_DEFINE([FLEXIBLE_ARRAY_MEMBER], 1) + fi +])