Я пытаюсь в C получить имя переменной, использованной при вызове функции, как показано ниже:

func(varA, varB)

Я хотел бы знать названия аргументов (varA, varB)

Я печатаю содержимое нескольких матриц, и мне было интересно, есть ли какой-нибудь простой способ различать их, не отправляя имя в виде строки.

Спасибо

0
DCuser 29 Фев 2016 в 15:42

2 ответа

Лучший ответ

Это невозможно без изменения определения функции.

Вы можете передать имена вручную или использовать макрос:

#define func( a , b )    func2( a , b , #a , #b )

func2( type a , type b , const char* namea , const char* nameb ){ ...

При предварительной обработке кода оператор # преобразует переменную в строку.

1
2501 29 Фев 2016 в 12:46

Когда программа на C компилируется и выполняется, имя переменной больше не существует.

Итак, нет, вы не можете получить фактическое имя аргумента (переменной) name из полученного параметра, как вы хотели.

1
Sourav Ghosh 29 Фев 2016 в 12:45