Я могу не исказить имена RTTI GCC?

Используя gcc, когда я прошу тип объекта/переменной с помощью идентификатора типа, я получаю другой результат type_info:: метод имени от того, что я ожидал бы входить в Windows. Я Погугленный вокруг немного и узнанный, что имена RTTI являются определенными для реализации.

Проблема, я хочу получить имя типа, когда она была бы возвращена в Windows. Существует ли простой способ сделать это?

6
задан Good Person 15 January 2012 в 17:29
поделиться

2 ответа

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

Вот статья об этом подходе.

-121--4268535-

Я думаю, что вы ищете что-то близкое к Джахии. Он поддерживает GWT, мэшапы, медиаконтент и т. д.

http://www.jahia.org/cms/lang/en/home/Jahiapedia/Jahia_Templates http://www.jahia.net/downloads/jahia/jahia6.0.0/readme/index.html

-121--679194-

Если вы об этом спрашиваете, нет коммутатора компилятора, который бы вел себя как msvc относительно имени, возвращенного type _ info:: name () .

Однако в коде можно использовать функцию gcc specific __ cxa _ demangle .

На самом деле есть ответ на SO, который решает вашу проблему .

Справочник: руководство libstdc++, глава 40. Деманглинг .

7
ответ дан 16 December 2019 в 21:40
поделиться

Названия функций C ++ действительно включают в себя все данные возврата и типа аргумента, а также имя класса и метода. При компиляции они «проникают в стандартную форму» (стандартный для каждого компилятора), который может выполняться в качестве символа ассемблера и включает в себя всю информацию о типе.

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

Попробуйте запустить

c++filt myoutput.txt

на выходе функции. Это деленды реальное имя символа обратно в читаемую форму человека.

1
ответ дан 16 December 2019 в 21:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: