Я не знаю, есть ли в clang способ определить, является ли CALL_EXPR вызовом указателя функции или обычным вызовом функции, пока это единственный обходной путь, который у меня есть.
Код: Выделить всё
c: Cursor
if c.kind == CursorKind.CALL_EXPR:
if not (c.referenced and c.referenced.kind == CursorKind.FUNCTION_DECL):
# funtion pointer
# ...
Код: Выделить всё
# the return type is invalid
result_type: Type = c.result_type
# the argument list is correct
arg_list = str(', ').join([arg.type.get_canonical().spelling for arg in c.get_arguments()])
print(f'{arg_list}')
Я просто хочу знать, есть ли простой способ получить конкретную сигнатуру этого указателя на функцию.
Подробнее здесь: https://stackoverflow.com/questions/792 ... r-from-the