Skip to content

Commit

Permalink
GH-92892: Add section about variadic functions to ctypes documentation (
Browse files Browse the repository at this point in the history
GH-99529)

On some platforms, and in particular macOS/arm64, the calling
convention for variadic arguments is different from the regular
calling convention. Add a section to the documentation to document
this.
(cherry picked from commit bc3a11d)

Co-authored-by: Ronald Oussoren <ronaldoussoren@mac.com>
  • Loading branch information
miss-islington and ronaldoussoren authored Nov 22, 2022
1 parent 420b7e8 commit a64e71e
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
20 changes: 20 additions & 0 deletions Doc/library/ctypes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,26 @@ that they can be converted to the required C data type::
31
>>>

.. _ctypes-calling-variadic-functions:

Calling varadic functions
^^^^^^^^^^^^^^^^^^^^^^^^^

On a lot of platforms calling variadic functions through ctypes is exactly the same
as calling functions with a fixed number of parameters. On some platforms, and in
particular ARM64 for Apple Platforms, the calling convention for variadic functions
is different than that for regular functions.

On those platforms it is required to specify the *argtypes* attribute for the
regular, non-variadic, function arguments:

.. code-block:: python3
libc.printf.argtypes = [ctypes.c_char_p]
Because specifying the attribute does inhibit portability it is adviced to always
specify ``argtypes`` for all variadic functions.


.. _ctypes-calling-functions-with-own-custom-data-types:

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Document that calling variadic functions with ctypes requires special care on macOS/arm64 (and possibly other platforms).

0 comments on commit a64e71e

Please sign in to comment.