main函式前後

2021-06-22 15:31:26 字數 882 閱讀 1225

1.main函式的原型為int main(int argc, char* argv, char* env),可以列印出傳入引數和環境變數。

2.main函式的返回值雖然是int(佔4個位元組),但卻只用了1個位元組儲存返回值。正確的返回值是0xreturn&0xff.在bash裡執行echo $?檢視程式退出碼。

3.main函式之前執行部分,全域性變數建構函式,__attribute__((constructor))func()函式隨後執行。

4.main函式之後執行部分,atexit的註冊函式,全域性變數析構函式,__attribute__((destructor))func()函式等依次執行。

#include #include __attribute__((constructor))void befor_main (void)

__attribute__((destructor))void after_main(void)

void atexit_register(void)

//aexit在after_main之前執行

int test_atexit()

class global

~global()

};global g_variable;//全域性變數,靜態變數在編譯時就已經分配好了記憶體的!

int main(int argc, char* argv, char* env)//main函式的原型

for(i = 0; env[i] != null; i++)

test_atexit();

return 1000;

//使用echo $?可以列印出退出碼。雖然返回型別是int,但返回值只用了乙個位元組來儲存,列印為1000&0xff。

}

在main前後呼叫函式的方法

方法一 使用 attribute巨集 可宣告多個constructor,在main前呼叫多個函式 attribute constructor void before main attribute destructor void after main intmain int argc,char ar ...

C 在main 函式執行前,後執行了哪些操作

設定棧指標 初始化static靜態和global全域性變數,即data段的內容 將未初始化部分的全域性變數賦初值 數值型short,int,long等為0,bool為false,指標為null,等等,即.bss段的內容 全域性物件初始化,在main之前呼叫建構函式 將main函式的引數,argc,a...

main函式詳解

c的設計原則是把函式作為程式的構成模組。main 函式稱之為主函式,乙個c程式總是從main 函式開始執行的。在最新的 c99 標準中,只有以下兩種定義方式是正確的 參閱iso iec 9899 1999 e 5.1.2.2.1 program startup int main void 無引數形式...