Вопросы с тегом 'name-mangling'

Name-mangling - это метод, используемый компиляторами (в основном компиляторами С++) для кодирования информации в строках, которые могут поддерживаться компоновщиками, предназначенными для обработки кода C.
3 отв.

typeid() возвращает дополнительные символы в g++

class foo { public: void say_type_name() { std::cout << typeid(this).name() << std::endl; } }; int main() { foo f;; f.say_type_name(); } Над кодом печатает P3foo на моей машине ubuntu с g++. Я не понимаю, почему он печата...
25 апр. '09 в 20:53
2 отв.

Почему у меня на выходе сборки есть две реализации деструктора?

И objdump моего файла .o показывает, что у меня есть два разных деструктора для одного и того же класса. Почему? Disassembly of section .text._ZN1AD0Ev: 0000000000000000 <_ZN1AD0Ev>: 0: 53 push %rbx 1: be 00 0...
15 июня '17 в 6:40
4 отв.

Как развязать искаженные имена С++ lambdas?

После компиляции с g++-4.9.3 -std=c++11 код #include <iostream> #include <typeinfo> using namespace std; int main() { cout << typeid([]{}).name() << endl; } выводит Z4mainEUlvE_ как искаженное имя данной лямбды на Linux x8...
10 апр. '16 в 22:24
2 отв.

Может objdump не использовать символы шаблонов С++?

У меня есть объектный файл С++, содержащий экземпляры некоторых функций шаблона С++. Этот объектный файл создает одну и ту же функцию для нескольких различных комбинаций параметров шаблона. Я пытаюсь отладить проблему и хотел бы посмотреть на разборк...
23 февр. '12 в 21:47
2 отв.

Как заставить gdb отображать оригинальное имя функции невозврата на модели разборки?

void outputString(const char *str) { cout << "outputString(const char *str) : " << str << endl; } оказывается Dump of assembler code for function _Z12outputStringPKc: 0x004013ee <_Z12outputStringPKc+0>: push ebp 0x0...
24 дек. '09 в 10:32
2 отв.

stdcall name mangling using extern c и dllexport vs определения модулей (msvС++)

Я пытался экспортировать простую тестовую функцию для dll для работы с приложением (fyi: mIRC), который определяет соглашение о вызове как: int __stdcall test_func(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) Теперь, что...
29 дек. '11 в 2:15
2 отв.

Почему возвращаемый тип экземпляров шаблонов функций С++ включен в имя функции mangled?

The Itanium ABI указывает, что с несколькими неинтересными исключениями тип возврата включается в искаженные имена шаблонных экземпляров, но не не-шаблоны. Почему это? В каком случае у вас может быть два экземпляра шаблонов функций, в которых линкер...
05 мая '15 в 18:48
1 отв.

Что означает "_GLOBAL__sub_I_" в выводе nm?

Пока я пытался решить проблему в статической привязке, я встречаю пару префиксов _GLOBAL__sub_I_ перед именами символов. Он появляется в этой форме, хотя я использовал nm --demangle(-C). Я наткнулся на этот ответ (Как найти глобальные статические и...
29 июля '15 в 7:33
2 отв.

С++ зависимый от шаблона аргумент decltype в имени пользователя ABI

Рассмотрим следующую функцию: template <typename A, typename B> auto Min(A&& a, B&& b) -> decltype(a < b ? std::forward<A>(a) : std::forward<B>(b)) { return a < b ? std::forward<A>(a) : st...
08 нояб. '12 в 21:01
1 отв.

Что означает суффикс функции GCC.constprop?

Глядя на разборку программы на С++, я вижу такие функции, как _Z41__static_initialization_and_destruction_0ii.constprop.221. Что означает constprop в этом случае? Похоже, что он похож на суффиксу isra (и иногда комбинируется, например, .isra.124.co...
10 февр. '13 в 13:17
3 отв.

получить имя функции С++ во время компиляции (или время выполнения)

У меня есть метод класса функций, ValueHolder:: printValue class ValueHolder { public: void printValue (); } ; Как определить свое искаженное имя во время компиляции (или время выполнения). Например, я хотел бы сделать это: const char *mang...
25 нояб. '16 в 17:04
1 отв.

Что означает суффикс функции GCC "isra"?

При профилировании программы, скомпилированной с помощью gcc, я заметил такие функции, как foo.isra.3. Что указывает isra? Я замечаю, что одна из функций вызывается только в нескольких местах, и один из аргументов всегда указывается как буквальное з...
20 дек. '12 в 2:50
3 отв.

В чем преимущество частного имени в Python?

Python предоставляет личное имя mangling для методов и атрибутов класса. Существуют ли какие-либо конкретные случаи, когда эта функция требуется, или это просто перенос с Java и С++? Просьба описать прецедент, в котором должно использоваться коди...
22 июля '09 в 2:11
5 отв.

Разница в связи между C и С++?

Я прочитал существующие вопросы о внешней/внутренней связи здесь, на SO. Мой вопрос другой: что произойдет, если у меня есть несколько определений одной и той же переменной с внешней связью в разных единицах перевода в C и C++? Например: /*file1.c...
08 янв. '10 в 11:08
1 отв.

API-интерфейс драйверов CUDA и функция Mangling

У меня есть проект, который требует С++ 11, поэтому я разделяю файлы на две категории: те, которые используют С++ 11, и те, которые используют С++ 03, и, следовательно, совместимы с компилятором nvcc. Когда у меня есть ядро, которое не является функц...
03 мая '12 в 19:11