diff options
author | Sandra Loosemore <sandra@codesourcery.com> | 2019-02-25 21:33:26 -0500 |
---|---|---|
committer | Sandra Loosemore <sandra@gcc.gnu.org> | 2019-02-25 21:33:26 -0500 |
commit | 476e0d374791edb600cf47fd062cbd99b418d192 (patch) | |
tree | 0accd947282776391f36d4a7b5056273b5f9e430 /gcc/doc | |
parent | 99e20ba51d5b0785c7e98244d2901853d9fb3b41 (diff) | |
download | gcc-476e0d374791edb600cf47fd062cbd99b418d192.zip gcc-476e0d374791edb600cf47fd062cbd99b418d192.tar.gz gcc-476e0d374791edb600cf47fd062cbd99b418d192.tar.bz2 |
re PR c/80409 (Document that va_arg(ap, void*) can be used to consume any pointer argument)
2019-02-25 Sandra Loosemore <sandra@codesourcery.com>
PR c/80409
gcc/
* doc/extend.texi (Variadic Pointer Args): New section.
From-SVN: r269203
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/extend.texi | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index d9c78a3..696d892c 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -47,6 +47,7 @@ extensions, accepted by GCC in C90 mode and in C++. * Escaped Newlines:: Slightly looser rules for escaped newlines. * Subscripting:: Any array can be subscripted, even if not an lvalue. * Pointer Arith:: Arithmetic on @code{void}-pointers and function pointers. +* Variadic Pointer Args:: Pointer arguments to variadic functions. * Pointers to Arrays:: Pointers to arrays with qualifiers work as expected. * Initializers:: Non-constant initializers. * Compound Literals:: Compound literals give structures, unions @@ -1944,6 +1945,22 @@ and on function types, and returns 1. The option @option{-Wpointer-arith} requests a warning if these extensions are used. +@node Variadic Pointer Args +@section Pointer Arguments in Variadic Functions +@cindex pointer arguments in variadic functions +@cindex variadic functions, pointer arguments + +Standard C requires that pointer types used with @code{va_arg} in +functions with variable argument lists either must be compatible with +that of the actual argument, or that one type must be a pointer to +@code{void} and the other a pointer to a character type. GNU C +implements the POSIX XSI extension that additionally permits the use +of @code{va_arg} with a pointer type to receive arguments of any other +pointer type. + +In particular, in GNU C @samp{va_arg (ap, void *)} can safely be used +to consume an argument of any pointer type. + @node Pointers to Arrays @section Pointers to Arrays with Qualifiers Work as Expected @cindex pointers to arrays |