程式設計師的自我修養 執行庫

2021-07-10 17:07:59 字數 681 閱讀 1185

atexit()函式註冊乙個main結束時執行的函式。

大致如下:

1. 作業系統在建立程序後,把控制權交給程式的入口;

2. 入口函式對執行庫和程式執行環境進行初始化,包括堆、io、執行緒、全域性變數構造等。

3. 入口函式在完成初始化之後呼叫main函式,開始執行程式主體部分。

4. main函式執行完畢之後,返回到入口函式,入口函式進行清理工作,包括全域性變數析構、堆銷毀、關閉io等,然後進行系統呼叫結束程序。

exit是程序正常退出的必經之路。

變長引數的實現得益於c語言預設的cdecl呼叫慣例的從右向左的壓棧傳遞方式。 cdecl是呼叫方負責清除棧。被呼叫方不知道有多少引數被傳遞進來,沒辦法清除堆疊。

va_list:乙個指標,指向各個不定引數。

va_start : 將 va_list 定義的指標指向函式的最後乙個引數後面的位置,即第乙個不定引數。

va_end :將指標清零。

vsprintf():將va_list指向的引數格式化輸出到字串中。

va_arg: 獲取不定引數的值(需要確定引數尺寸)。

文字換行

linux/unix: \n

mac os : \r

windows :\r\n

在c語言中,回車始終用\n 表示。

《程式設計師的自我修養》筆記九 執行庫

main 不是程式開始的第一行 作業系統裝載程式之後,首先執行的不是 main 的第一行,而是某些別的 這些 負責準備好 main 函式執行所需要的環境,負責呼叫 main 函式,在 main 返回後,記錄其返回值,呼叫 atexit 註冊的函式,結束程序。在 main 之前執行的 被稱為入口函式或...

程式設計師的自我修養(十四) 入口函式和執行庫

入口函式和程式初始化 入口函式 入口點 程式的入口點實際上是乙個程式的初始化和結束部分,它往往是執行庫的一部分。乙個典型的程式執行步驟大概如下 glibc入口函式 msvc crt 入口函式 預設入口函式名為 maincrtstartup。它的大概流程是 初始化和os版本有關的全域性變數 初始化堆 ...

程式設計師的自我修養

一忌 輕易言敗,沒有自信 沒有永不放棄精神的程式設計師,只是乙個有程式設計師名號的假程式設計師。乙個真正的程式設計師,知道在程式設計的過程中,可能會遇到不計其數的困難和問題,可能有極多的挫折和失敗,而成功只有一次。就為解決乙個問題,我們可能連續十幾甚至幾十小時的坐在計算機前不停的工作。乙個問題解決了...