c 程式必須要從main函式開始執行麼?

2021-07-10 17:55:14 字數 474 閱讀 5286

這是在面試中被問到的乙個問題,回答了是。這問題第一感覺答案就是否定的,一時也沒想出來理由只能回答了是。當時太緊張了,其實回想一下組合語言就該想到程式的入口位址是可以指定的,c語言編譯器預設以main作為入口位址。

網上查閱後,發現了 __attribute__ 這個關鍵字,它可以設定函式屬性,變數屬性,型別屬性。

參考:看下面的例子:

// gcc 編譯器

#include__attribute__((constructor)) void

before_main

()__attribute__

((destructor)) void

after_main

()int

main

()

可以看到上面的程式並不是從main函式開始執行的。constructor 設定在main前面執行,destructor 設定在main之後執行。

C語言必須要記住的經典程式

1 判斷101 200之間有多少個素數,並輸出所有素數及素數的個數。程式分析 判斷素數的方法 用乙個數分別去除2到sqrt 這個數 如果能被整除,則表明此數不是素數,反之是素數。include math.h main intm,i,k,h 0,leap 1 printf n for m 101 m ...

程式是從main主函式開始執行嗎?

很多人開始學計算機語言,編寫 時都會有乙個疑問 程式真的是從main主函式開始的嗎?之前什麼都不做嗎?main結束後就不能執行其他函式了嗎?下面本篇文章就為此問題做乙個簡單的解釋。作業系統在裝載程式之後,首先執行的不是main程式的第一行,在執行mian主函式之前其實還有一些別的 需要執行,這些 負...

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

在gcc中,可以使用attribute關鍵字,宣告constructor和destructor,如下 cpp view plain copy print?include attribute constructor void before main attribute destructor void ...