Возможный дубликат:
Можете ли вы напечатать что-нибудь в C ++, прежде чем войти в основную функцию?
Есть ли возможность запустить какие-либо другие инструкции перед вызовом int main ()?
int main(){cout<<"a";}
и до этого вызова в main () есть вызов для cout<<«B»; где-то раньше Может быть, эта #define вещь может помочь.
Вам не нужен define
, Просто создайте глобальный объект (в том же файле), и его ctor (или все, что вы используете для его инициализации, например, вызов функции) будет запущен до вызова main.
Изменить: аналогично, эти глобальные объекты будут уничтожены после основных выходов, поэтому их деструкторы будут работать в это время.
Глобальные объекты создаются перед запуском 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;
}