Возможно ли в c ++ получить в виде строки имя переменной, которая была передана как параметр?
Nov 29 2020
Я хотел бы иметь возможность сделать что-то подобное
int myVar = 3;
void logger(int param) {
std::cout << nameOf(param) << ": " << param << std::endl;
}
logger(myVar); // prints "myVar: 3"
Ответы
4 cigien Nov 29 2020 at 19:14
Нет, вы пока не можете сделать это на языке C ++, поскольку для этого нет средства отражения.
Однако вы можете использовать макросы препроцессора для достижения желаемого эффекта. Обратите внимание, что макросы опасны, и их следует по возможности избегать.
Сначала напишите функцию реализации, которая принимает значение параметра и имя параметра, например:
void logger_impl(int param, std::string param_name) {
std::cout << param_name << ": " << param << std::endl;
}
Затем вы можете написать макрос, который генерирует строку из имени переменной в сайте вызова, используя #(оператор строкового преобразования), а затем использует эту строку в вызове функции реализации:
#define logger(p) logger_impl(p, #p)
Вот демо .