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 無引數形式...