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

Возможный дубликат:
Можете ли вы напечатать что-нибудь в C ++, прежде чем войти в основную функцию?

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

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

и до этого вызова в main () есть вызов для cout<<«B»; где-то раньше Может быть, эта #define вещь может помочь.

0

Решение

Вам не нужен define, Просто создайте глобальный объект (в том же файле), и его ctor (или все, что вы используете для его инициализации, например, вызов функции) будет запущен до вызова main.

Изменить: аналогично, эти глобальные объекты будут уничтожены после основных выходов, поэтому их деструкторы будут работать в это время.

11

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

Глобальные объекты создаются перед запуском main (). Таким образом, вы можете определить класс, поместить свой код в его конструктор, а затем объявить глобальный экземпляр этого класса:

class temp
{
public:
temp()
{
cout << "before main" << endl;
}

~temp()
{
cout << "after main" << endl;
}
};

temp t;

int main()
{
cout << "in main" << endl;
return 0;
}

Глобальные переменные также инициализируются перед выполнением main (). Вы можете определить функцию, которая возвращает значение, затем вызвать эту функцию и присвоить значение глобальной переменной в ее объявлении, как показано в @jrok.

Некоторые компиляторы также поддерживают #pragma startup оператор для выполнения пользовательской функции при запуске (и соответствующий #pragma exit заявление о закрытии):

void beforeMain()
{
cout << "before main" << endl;
}
#pragma startup beforeMain

void afterMain()
{
cout << "after main" << endl;
}
#pragma exit afterMain

int main()
{
cout << "in main" << endl;
return 0;
}
2

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