[c++] определение текущего класса/неймспейса из макроса
Непонятно, почему __P_F__ не подходит, и почему не хочется написать фильтр, выкидывающий из __P_F__ всё лишнее и заменяющий "::" на ".".
http://log4cpp.sourceforge.net/api/classlog4cpp_1_1PropertyC... )
если оборачивать это всё в функцию, то она будет вызываться при каждом вызове функции логирования. при большом числе последнего - лишние тормоза. хочется избежать....
потому что хочется это использовать для log4cpp, автоматически получая имя категории из полного пути функции. (пример конфиг файла: если оборачивать это всё в функцию, то она будет вызываться при каждом вызове функции логирования. при большом числе последнего - лишние тормоза. хочется избежать....
Препроцессором ты этого не получишь. Если очень хочется, можно перед линковой пройтись по ассемблеру скриптом и переписать там строковые константы от __P_F__ на нужные.
если ты в начале каждой функции напишешь
static const string FUNCTION_NAME = get_name(__PRETTY_FUNCTION__);
то она вызовется максимум по одному разу на каждую такую функцию. вроде не очень много?
да, точно. вот это мне нравится. спасибо)
Оставить комментарий
oleg1331
есть ли возможность получить макросом строку "n1.n2.Foo.f" (полный путь к функции, включая неймспейсы) из кода? например, так:макрос __PRETTY_FUNCTION__ выводит , что не совсем то, что хочется.
кросплатформенное не обязательно, круто было бы, если хотя бы под gcc работало.