aboutsummaryrefslogtreecommitdiff
path: root/gcc/doc/extend.texi
diff options
context:
space:
mode:
authorSandra Loosemore <sandra@codesourcery.com>2019-02-25 21:33:26 -0500
committerSandra Loosemore <sandra@gcc.gnu.org>2019-02-25 21:33:26 -0500
commit476e0d374791edb600cf47fd062cbd99b418d192 (patch)
tree0accd947282776391f36d4a7b5056273b5f9e430 /gcc/doc/extend.texi
parent99e20ba51d5b0785c7e98244d2901853d9fb3b41 (diff)
downloadgcc-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/extend.texi')
-rw-r--r--gcc/doc/extend.texi17
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