OLD | NEW |
(Empty) | |
| 1 /* Memory allocation on the stack. |
| 2 |
| 3 Copyright (C) 1995, 1999, 2001-2004, 2006-2012 Free Software Foundation, |
| 4 Inc. |
| 5 |
| 6 This program is free software; you can redistribute it and/or modify it |
| 7 under the terms of the GNU General Public License as published |
| 8 by the Free Software Foundation; either version 3, or (at your option) |
| 9 any later version. |
| 10 |
| 11 This program is distributed in the hope that it will be useful, |
| 12 but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 14 General Public License for more details. |
| 15 |
| 16 You should have received a copy of the GNU General Public |
| 17 License along with this program; if not, see |
| 18 <http://www.gnu.org/licenses/>. |
| 19 */ |
| 20 |
| 21 /* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H |
| 22 means there is a real alloca function. */ |
| 23 #ifndef _GL_ALLOCA_H |
| 24 #define _GL_ALLOCA_H |
| 25 |
| 26 /* alloca (N) returns a pointer to N bytes of memory |
| 27 allocated on the stack, which will last until the function returns. |
| 28 Use of alloca should be avoided: |
| 29 - inside arguments of function calls - undefined behaviour, |
| 30 - in inline functions - the allocation may actually last until the |
| 31 calling function returns, |
| 32 - for huge N (say, N >= 65536) - you never know how large (or small) |
| 33 the stack is, and when the stack cannot fulfill the memory allocation |
| 34 request, the program just crashes. |
| 35 */ |
| 36 |
| 37 #ifndef alloca |
| 38 # ifdef __GNUC__ |
| 39 # define alloca __builtin_alloca |
| 40 # elif defined _AIX |
| 41 # define alloca __alloca |
| 42 # elif defined _MSC_VER |
| 43 # include <malloc.h> |
| 44 # define alloca _alloca |
| 45 # elif defined __DECC && defined __VMS |
| 46 # define alloca __ALLOCA |
| 47 # else |
| 48 # include <stddef.h> |
| 49 # ifdef __cplusplus |
| 50 extern "C" |
| 51 # endif |
| 52 void *alloca (size_t); |
| 53 # endif |
| 54 #endif |
| 55 |
| 56 #endif /* _GL_ALLOCA_H */ |
OLD | NEW |