Учитывая следующий код в проекте, я работаю над:GCC __func__ получает оценку в пустую строку
/* Pre-definitions in a pre-definitions file to be included in the project */
#ifdef WIN32
#define __FUNCNAME__ __FUNCTION__
#else
#define __FUNCNAME__ __func__
#endif
/* My definitions */
#define MAC() \
MAC1()
#define MAC1() \
myPrintFunction(__FUNCNAME__)
/* My print function */
void myPrintFunction(const char * functionName)
{
printf("\n func name: %s \n",functionName);
}
/* Macro usage example function */
void myFunction()
{
if (some_condition)
{
MAC();
}
}
Имя функции представлена как пустая строка. Любая идея, почему, и как я могу ее исправить?
Код компилирован и протестирован на компьютере Linux с использованием компилятора GCC.
Вы уверены, что 'some_condition' верно? – freestyle
Нет 'main()'? Отправьте [минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). – DevSolar
Да, я уверен. Я могу увидеть «\ n func name: \ n», и я также отлаживаю этот код с помощью отладчика и этот код выполняется. – user2162550