Skip to content

Commit

Permalink
pythonGH-92892: Add section about variadic functions to ctypes docume…
Browse files Browse the repository at this point in the history
…ntation (pythonGH-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
ronaldoussoren authored and miss-islington committed Nov 22, 2022
1 parent 37dbbb2 commit 489d2e3
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 @@ -373,6 +373,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 489d2e3

Please sign in to comment.