Closed
Description
This code produces an error with a somewhat unhelpful message:
from ctypes import *
printf = CDLL('libc.so.6').printf
printf.argtypes = [c_char_p, c_char_p]
printf(b"Value %s\n", 10) # call with an incompatible argument
Traceback (most recent call last):
File "/home/tomas/dev/cpython/error.py", line 5, in <module>
printf(b"Value: %s\n", 10)
ctypes.ArgumentError: argument 2: TypeError: wrong type
The source code itself suggests providing a better message:
cpython/Modules/_ctypes/_ctypes.c
Lines 1795 to 1797 in 3979150
I suggest making the message more helpful by including the expected argument type and the type that was actually provided e.g.
- TypeError: wrong type
+ TypeError: 'int' object cannot be interpreted as ctypes.c_char_p
The same improvement can be applied to c_wchar_p
and c_void_p
.