Есть ли возможность вызывать другие методы / инструкции ПОСЛЕ main () при запуске кода

Есть ли возможность выполнить какие-либо другие инструкции после вызова int main ()?

int main(){cout<<"a";}

и после этого вызова в main () происходит вызов cout<<«B»; где-то после. Без изменений int main()бы то ни было.

0

Решение

Деструкторы статических объектов и функции, зарегистрированные с std::atexit, выполнены после main выходы.

#include <iostream>
#include <cstdlib>

struct S {~S() {std::cout << "c";}};
void f() {std::cout << "b";}

S s;

int main() {
std::atexit(f);
std::cout << "a";
}

Выход: abc

7

Другие решения

Вы могли бы поставить свою последнюю часть в atexit().
Он будет запущен после завершения программы, т. Е. После завершения вашего вызова main ().

Вы могли бы иметь несколько atexitтакже.

Если более чем одна функция atexit была определена различными вызовами
для этой функции все они выполняются в обратном порядке как стек
(т.е. последняя указанная функция является первой, которая будет выполнена в
выход).

6

Да, определить класс, который делает cout << "b" в его деструкторе, а затем определить глобальный экземпляр этого класса.

2

Короче, очень маленький вариант. Ты можешь использовать atexit() чтобы что-то произошло после главных выходов, или у вас может быть глобальный объект, деструктор которого вызывается после основных выходов. Но конец main — это официально конец вашей программы.

2
По вопросам рекламы [email protected]