1 # Check for flexible array member support.
3 # Copyright (C) 2006 Free Software Foundation, Inc.
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2, or (at your option)
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
20 # Written by Paul Eggert.
22 AC_DEFUN([AC_C_FLEXIBLE_ARRAY_MEMBER],
24 AC_CACHE_CHECK([for flexible array member],
31 struct s { int n; double d[]; };]],
33 struct s *p = malloc (offsetof (struct s, d)
34 + m * sizeof (double));
36 return p->d != (double *) NULL;]])],
37 [ac_cv_c_flexmember=yes],
38 [ac_cv_c_flexmember=no])])
39 if test $ac_cv_c_flexmember = yes; then
40 AC_DEFINE([FLEXIBLE_ARRAY_MEMBER], [],
41 [Define to nothing if C supports flexible array members, and to
42 1 if it does not. That way, with a declaration like `struct s
43 { int n; double d@<:@FLEXIBLE_ARRAY_MEMBER@:>@; };', the struct hack
44 can be used with pre-C99 compilers.])
46 AC_DEFINE([FLEXIBLE_ARRAY_MEMBER], 1)