static переменная, а иногда в качестве обычной переменной в стеке /кучах. Исполняемый файл используется в встроенной цели, где
Flash является ограниченным ресурсом и который никогда не выходит, и для этого я бы хотел, чтобы
этот код «выхода» был отключен. < /Code> - это класс, в котором необходим деструктор
для обычных обстоятельств, но не требуется для статического
variables.
Код: Выделить всё
struct Abstract {
virtual ~Abstract() {}
};
struct A : public Abstract {
int i = 0;
};
static A a;
static A b;
-fno -Exceptions -fno-rtti ), сгенерированное: http://./fwcmlu>
Abstract::~Abstract():
ret
A::~A():
ret
A::~A():
jmp operator delete(void*)
Abstract::~Abstract():
jmp operator delete(void*)
pushq %rax
movl $__dso_handle, %edx
movl a, %esi
movl A::~A(), %edi
call __cxa_atexit
popq %rcx
movl $__dso_handle, %edx
movl b, %esi
movl A::~A(), %edi
jmp __cxa_atexit
vtable for Abstract:
vtable for A:
b:
.quad vtable for A+16
.long 0
.zero 4
a:
.quad vtable for A+16
.long 0
.zero 4
< /code>
Как видно в коде ассемблера выше достаточного количества инструкций, чтобы
Do Coade. Он не должен портативный - пока он работает в недавних версиях GCC. Атрибуты, сценарии линкеров, изменение объектных файлов и другие трюки в основном приветствуются.
Подробнее здесь: https://stackoverflow.com/questions/276 ... -variables