C : получить простое имя функции вместо полного квалифицированного имени

#android #c

#Android #c

Вопрос:

Я хотел бы отобразить имя функции в моем макросе журнала, и я использую __func__ .

Однако для функции, подобной:

 int foo(int)
  

__func__ возвращает int foo(int) вместо foo .

int foo(int) слишком длинно. Я хочу foo .

Кто-нибудь знает, как получить foo ?

Среда — это проект с открытым исходным кодом Android, а компилятор — clang с -std =c 14.

Комментарии:

1. Как насчет некоторых манипуляций со строками?

2. foo было бы неоднозначно для перегруженных функций. Я не думаю, что для этого будет встроенный способ. Воспользуйтесь советом Юнноса.

3. __func__ должно быть указано только имя. Какой компилятор вы используете?

4. компилятор @geza — это компилятор по умолчанию, используемый Android 7.0, который является clang 5.0. Тот же код, скомпилированный NDK, в порядке, печатается только имя.

5. @Yunnosch @super кажется, это легко сделать. Я думаю, что могу просто получить строку между :: и (