Есть ли способ получить имена параметров функции в C - PullRequest
1 голос
/ 10 июня 2019

в python есть inspect.argspec, который даст вам данные о функции, включая имена параметров, но в CI понятия не имею, как я мог бы получить эту информацию из функции.По сути, я хочу написать функцию, которая принимает указатель на функцию и возвращает массив строк, представляющих имена параметров

Ответы [ 3 ]

4 голосов
/ 10 июня 2019

По сути, я хочу написать функцию, которая принимает указатель на функцию и возвращает массив строк, представляющих имена параметров

Параметры функции в C не имеют имен внеопределение функции, и имена полностью исчезают после компиляции кода.Отладчики могут использовать файлы символов, сгенерированные компилятором, для отображения имен функций, параметров и переменных, но в целом вся эта информация удаляется во время компиляции.

2 голосов
/ 10 июня 2019

В языке C нет способа получить имена параметров, но его можно скомпилировать с помощью опции dwarf , и в этом случае он сохранит имена параметров в выходном исполняемом файле. Для такого исполняемого файла вы можете получить имена параметров так же, как это делает GDB.

Вы можете использовать ту же библиотеку, что и GDB. Вы должны изучить, как использовать гнома, начните читать с 6.1 Symbol Reading.

1 голос
/ 10 июня 2019

На языке такого механизма нет.

Если бы вы провели какое-то расследование, вы бы обнаружили, что если ваша программа не скомпилирована с отладочной информацией, то в исполняемом файле таких символов нет нигде. И, следовательно, сама программа не может иметь к ним доступ во время выполнения.

Однако, если вы скомпилировали символы отладки (которые не являются частью языка), вы могли бы написать код для получения символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...