В версиях gcc до 3.3 и компиляторе MS я использую следующий макрос:
DEBUG_WARNING(...) printf(">WARNING: "__FUNCTION__"() " __VA_ARGS__);
Использование:
DEBUG_WARNING("someFunction returned %d", ret);
Выход:
>WARNING: Class::FunctionName() someFunction returned -1
Это чрезвычайно удобно, когда у нас много систем, все из которых отправляют вывод. Это однострочный макрос, который позволяет нам соответствующим образом фильтровать вывод. Маленький код, большое использование, радуй меня.
Поскольку определение __FUNCTION__
(и __func__
в C ++) изменилось (я полагаю, что для соответствия стандартам) оно также сделало этот макрос неработоспособным.
У меня все работает, используя функцию, которая создает строку вручную, но мне нравится мой макрос.
Мне не хватает простого способа заставить этот простой однострочный макрос работать под Gcc 3.3?
: D