Как использовать c++filt

Возможный дубликат:
Могу ли я разобрать имена RTTI GCC?

Я начал использовать code::blocks с gcc (просто не мог больше терпеть VS2010), и хотя я в целом доволен, одна вещь, которая определенно не так хорошо сделана в gcc, это то, что когда я хочу использовать typeid, я m получая не точное имя типа, а некоторую символическую запись (почему? почему они не могут использовать имена типов?) в любом случае, я слышал, что c++filt может помочь с такого рода проблемами, но я не знаю, как чтобы использовать его (или установить - нужно ли его скачивать?).


person smallB    schedule 22.10.2011    source источник
comment
Понижение не от меня, поэтому я не могу сказать, но ваш вопрос сформулирован неправильно. Старайтесь не включать не относящиеся к делу детали (например, тот факт, что вы не переносите VS), не относитесь негативно к вещам, которые вы не понимаете (например, изменение шрифта), и если вы нашли инструмент, который, по вашему мнению, подходит ваши потребности, используйте Google, чтобы получить некоторую информацию об этом - совершенно очевидно, что если у вас ее нет, вам нужно будет получить ее откуда-то, и что где-то, скорее всего, есть документация о том, как вы ее используете.   -  person Mat    schedule 22.10.2011
comment
@Mat хорошо, спасибо, без проблем. + 1   -  person smallB    schedule 22.10.2011


Ответы (1)


typeid возвращает ссылку на экземпляр std::type_info, поэтому я предполагаю, что вы используете его метод name().

Чтобы ответить на ваш вопрос о том, почему вы не получаете «точные» имена типов: name() возвращает строку, определенную реализацией, поэтому вам не следует полагаться на то, что она имеет какое-либо значение. В частности, он даже не обязательно должен быть уникальным для типа.

Вы должны сравнивать объекты std::type_info напрямую, используя ==, != или .before(), возможно, в сочетании с .hash_code(), если у вас есть поддержка C++11.

person CB Bailey    schedule 22.10.2011