char的預編譯命令
㈠ c語言中#include <stdio.h>是什麼意思
包含標准頭文件stdio.h。
1、#include 是C語言預編譯命令之一。
include並不屬於C語言關鍵字。以#開頭的#include是預編譯命令,即不是在運行過程中生效,而是在編譯的時候就會生效。
include的效果為,在編譯時把被包含的文件中的內容,放到被編譯的c文件對應位置。
2、stdio.h是C語言庫文件的頭文件之一,包含了常用的標准輸入輸出。
比如printf,scanf等語句都是在stdio.h中的。
3、在源文件中包含了stdio.h 就等於聲明了stdio.h中的所有函數,並使該文件中的所有宏定義在源文件中可用。
即使用printf,scanf等語句不會引起警告, 同時可以使用諸如NULL一類的宏定義。
㈡ c++ 編譯 鏈接是怎麼回事
compile和link是大多數語言從原代碼生成可執行程序的兩個步驟。
之所有有這兩個步驟因為幾乎任何一個程序都不是用一個原文件寫出來的。compile是先針對單獨原文件進行處理。link是把compile處理的結果組合成一個完整的可執行文件。
其實C/C++完全也可以一步成型,不需要compile和link兩個步驟,但是那樣的後果就是:一,每次生成可執行程序,必須翻譯全部源代碼;二,C語言的執行庫(printf, scanf這些)必須都以源代碼形式存在。這怎麼樣也說不過去吧。
另外頭文件不屬於compile和link過程,頭文件是預編譯過程的文件。
C/C++語言的完整編譯過程是
一、預編譯
處理#define #if #include這類#開頭的語句,這些稱為預編譯指令。這個過程中會把.h文件和.c/.cpp文件組合成最終交給compile過程的原文件。這個原文件是不包含任何#開頭的語句的。所有#define定義的宏也會被替換。
二、編譯
把上面那個原文件編譯成.o或者VC里是.obj文件。這個文件保存了機器碼化的函數、函數的描述、全局變數的描述、乃至段的描述等等。
三、連接
把可執行程序需要的所有的編譯過程產生的.o或者.obj文件組合到一起。(這里也包括.lib文件,.lib文件件本質上就是打包的.obj文件集合)。另外連接過程還會組合一些其他數據,比如資源、可執行文件頭等等。