Estou usando ctype
para chamar código C do Python.
A função C que preciso chamar recebe um char***
, e por isso é vinculada como se estivesse usando um ctypes.POINTER(ctypes.POINTER(ctypes.c_char))
.
Não entendo como criar e inicializar esses objetos com segurança, porque se eu criar um e tentar iterá-lo imediatamente, o programa Python trava:
import ctypes
names = ctypes.POINTER(ctypes.POINTER(ctypes.c_char))()
if names != None:
for name in names:
pass
O erro é:
Traceback (most recent call last):
File "example_sdetests_lib_bind_python_string_array.py", line 6, in <module>
for name in names:
ValueError: NULL pointer access
Como posso verificar com segurança se um valor ctypes.POINTER(ctypes.POINTER(ctypes.c_char))
é NULL ou não?
Para sua informação:
char***
precisa de trêsctypes.POINTER
.Para testar se é nulo, teste como qualquer outro objeto "falsey":
Saída: