C語言中如何在main函式開始前執行函式

2021-06-09 19:03:19 字數 891 閱讀 6327

在gcc中,可以使用attribute關鍵字,宣告constructor和destructor,**如下:

[cpp]view plain

copy

print?

#include 

__attribute((constructor)) void before_main()  

__attribute((destructor)) void after_main()  

int main( int argc, char ** argv )    

vc不支援attribute關鍵字,在vc中,可以使用如下方法:

[cpp]view plain

copy

print?

#include 

intmain( int argc, char ** argv )  

int before_main()  

int after_main()  

typedef

int func();  

#pragma data_seg(".crt$xiu")

static func * before = ;  

#pragma data_seg(".crt$xpu")

static func * after = ;  

#pragma data_seg()

編譯執行,上述兩段**的結果均為:

before_main

main

after_main

可以在main前後呼叫多個函式,在gcc下使用attribute宣告多個constructor、destructor,vc下在before、after陣列中新增多個函式指標。

C語言中main函式的引數

我們經常用的main函式都是不帶引數的。因此main 後的括號都是空括號。實際上,main函式可以帶引數,這個引數可以認為是 main函式的形式引數。語言規定main函式的引數只能有兩個,習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為 main argc,argv 語言還規...

C語言中main函式的引數

我們經常用的main函式都是不帶引數的。因此main 後的括號都是空括號。實際上,main函式可以帶引數,這個引數可以認為是 main函式的形式引數。語言規定main函式的引數只能有兩個,習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為 main argc,argv 語言還規...

c語言中的main函式討論

從剛開始寫c程式,相比大家便開始寫main 了。雖然無數的教科書和老師告訴我們main是程式的入口。那麼main函式是怎麼被呼叫的,怎麼傳入引數,返回的內容到 了,返回的內容是什麼?接下來我們來 一下這個問題。main 函式的形式 早期教材這麼寫 void main 其實翻翻c c 標準,從來沒有定...