Переношу проект на более старые зависимости для поддержки более старых ОС, начиная с Windows 7、но тут появляется проблема при переносе, в 2017 версии я тянул имена функций через макрос __func__, но в 2010 версии мне выдает:
error C2065: '__func__`' : undeclared identifier
Можно ли как то перенести данный макрос, функций просто нереально большое количество, и переписывание каждого имени отнимет очень большое кол-во времени?
UPD: Забыл предупредить, нужно имя функции без префикса класса. т.е. не libvlc::get_errmsg что возвращает макрос __FUNCTION__, а get_errmsg.
В с++ есть __func__, только это не макрос, а специальная встроенная переменная. Для получения недекорированного имени функции в VS можно использовать макрос __FUNCTION__. Причем делать #define __func__ __FUNCTION__ нельзя, так как это приводит к неопределенному поведению. Следует заменить все вхождения __func__ или (лучше) использовать __func__ корректно.
Добавьте определение
#define __func__ __FUNCTION__
и вам не придется менять весь код :) Пока вы работаете в Visual C++ - это безопасное решение. Можете, если опасаетесь, обвязать его для конкретной версии:
#if _MSC_VER == 1600
#define __func__ __FUNCSIG__
#endif
В VC++ 2010 нет __func__, но есть __FUNCTION__.
Более информативна, впрочем, замена
#define __func__ __FUNCSIG__
https://msdn.microsoft.com/en-us/library/b0084kay(v=vs.100).aspx позволяет предположить, что что-нибудь вроде __FUNCTION__:
// Demonstrates functionality of __FUNCTION__, __FUNCDNAME__, and __FUNCSIG__ macros
void exampleFunction()
{
printf("Function name: %s\n", __FUNCTION__);
printf("Decorated function name: %s\n", __FUNCDNAME__);
printf("Function signature: %s\n", __FUNCSIG__);
// Sample Output
// -------------------------------------------------
// Function name: exampleFunction
// Decorated function name: ?exampleFunction@@YAXXZ
// Function signature: void __cdecl exampleFunction(void)
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости