国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

c /c++復習筆記 第一天

2019-11-09 19:13:16
字體:
來源:轉載
供稿:網友

基礎知識回歸總結整理GNU編譯工具GCC支持多種編程語言支持多種平臺構建Build過程查看版本文件后綴編譯單個源程序編譯多個源程序預處理指令頭文件的三種定位方式

基礎知識回歸、總結、整理

GNU編譯工具GCC


1. 支持多種編程語言

~~~~~~~~~~~~~~~

C、C++、Objective-C、java、Fortran、Pascal、Ada

2. 支持多種平臺

~~~~~~~~~~~

Unix、linux、Windows。

3. 構建(Build)過程

~~~~~~~~~~~~~~

編輯 -> 預編譯 -> 編譯 -> 匯編 -> 鏈接

1) 編輯: vi hello.c -> hello.c 2) 預編譯:gcc -E hello.c -o hello.i -> hello.i -+ 3) 編譯: gcc -S hello.i -> hello.s | GCC 4) 匯編: gcc -c hello.s -> hello.o | 工具鏈 5) 鏈接: gcc hello.o -o hello -> hello -+

范例:hello.c

4. 查看版本

~~~~~~~

gcc -v

5. 文件后綴

~~~~~~~

.h - C語言源代碼頭文件 .c - 預處理前的C語言源代碼文件 .i - 預處理后的C語言源代碼文件 .s - 匯編語言文件 .o - 目標文件 .a - 靜態(tài)庫文件 .so - 共享庫(動態(tài)庫)文件

6. 編譯單個源程序

~~~~~~~~~~~~~

gcc [選項參數] 文件

-c - 只編譯不鏈接。 -o - 指定輸出文件。 -E - 預編譯。 -S - 產生匯編文件。 -pedantic - 對不符合ANSI/ISO C語言標準的 擴展語法產生警告。 -Wall - 產生盡可能多的警告。 范例:gcc -Wall wall.c -Werror - 將警告作為錯誤處理。 范例:gcc -Werror werror.c -x - 指定源代碼的語言。 范例:gcc -x c++ cpp.c -lstdc++ -g - 生成調試信息。 -O1/O2/O3 - 優(yōu)化等級。

7. 編譯多個源程序

~~~~~~~~~~~~~

gcc [選項參數] 文件1 文件2 …

思考:頭文件的作用是什么?

1) 聲明外部變量、函數和類。 2) 定義宏、類型別名和自定義類型。 3) 包含其它頭文件。 4) 借助頭文件衛(wèi)士,防止因同一個頭文件被多次包含, 而引發(fā)重定義錯。

包含頭文件時需要注意:

1) gcc的-I選項

指定頭文件附加搜索路徑。

2) #include <…>

先找-I指定的目錄,再找系統(tǒng)目錄。

3) #include “…”

先找-I指定的目錄,再找當前目錄,最后找系統(tǒng)目錄。

4) 頭文件的系統(tǒng)目錄

/usr/include /usr/local/include /usr/lib/gcc/i686-linux-gnu/4.6.3/include /usr/include/c++/4.6.3 (C++編譯器優(yōu)先查找此目錄)

8. 預處理指令

~~~~~~~~~

#include // 將指定文件的內容插至此指令處#include_next // 與#include一樣, // 但從當前目錄之后的目錄查找,極少用#define // 定義宏#undef // 刪除宏#if // 判定#ifdef // 判定宏是否已定義#ifndef // 判定宏是否未定義#else // 與#if、#ifdef、#ifndef結合使用#elif // else if多選分支#endif // 結束判定## // 連接宏內兩個連續(xù)的字符串# // 將宏參數擴展成字符串字面值#error // 產生錯誤,結束預處理#warning // 產生警告預定義宏 ~~~~~~~__BASE_FILE__ // 正在編譯的源文件名__FILE__ // 所在文件名__LINE__ // 行號__FUNCTION__ // 函數名__func__ // 同__FUNCTION____DATE__ // 日期__TIME__ // 時間__INCLUDE_LEVEL__ // 包含層數,從0開始__cplusplus // C++編譯器將其定義為1, // C編譯器不定義該宏# gcc PRedef.c__BASE_FILE__ : predef.c__FILE__ : print.h__LINE__ : 9__FUNCTION__ : print__func__ : print__DATE__ : May 25 2013__TIME__ : 07:31:39__INCLUDE_LEVEL__ : 2# g++ predef.c__BASE_FILE__ : predef.c__FILE__ : print.h__LINE__ : 9__FUNCTION__ : print__func__ : print__DATE__ : May 25 2013__TIME__ : 07:32:33__INCLUDE_LEVEL__ : 2__cplusplus : 1環(huán)境變量 ~~~~~~~~

C_INCLUDE_PATH - C頭文件的附加搜索路徑, 相當于gcc的-I選項。 CPATH - 同C_INCLUDE_PATH。 CPLUS_INCLUDE_PATH - C++頭文件的附加搜索路徑。 LIBRARY_PATH - 鏈接時查找靜態(tài)庫/共享庫的路徑。 LD_LIBRARY_PATH - 運行時查找共享庫的路徑。

通過gcc的-I選項指定C/C++頭文件的附加搜索路徑:

# gcc calc.c cpath.c -I.

將當前目錄作為C頭文件附加搜索路徑, 添加到CPATH環(huán)境變量中:

# export CPATH=$CPATH:. // export保證當前shell的 // 子進程繼承此環(huán)境變量# echo $CPATH# env | grep CPATH

也可以在~/.bashrc或~/.bash_profile 配置文件中寫環(huán)境變量,持久有效:

export CPATH=$CPATH:.執(zhí)行# source ~/.bashrc或# source ~/.bash_profile生效。以后每次登錄自動生效。

頭文件的三種定位方式:

1) #include “目錄/xxx.h” - 頭文件路徑發(fā)生變化, 需要修改源程序。 2) C_INCLUDE_PATH/CPATH=目錄 - 同時構建多個工程, 可能引發(fā)沖突。 3) gcc -I目錄 - 既不用改程序, 也不會有沖突。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 舞钢市| 招远市| 芜湖县| 体育| 皮山县| 西华县| 昭苏县| 温州市| 陇西县| 新建县| 高唐县| 库尔勒市| 新竹市| 西乌| 文水县| 松桃| 金平| 保靖县| 西畴县| 札达县| 铜山县| 泽州县| 崇礼县| 沅江市| 潞西市| 鸡东县| 威信县| 炉霍县| 临武县| 那坡县| 华容县| 鱼台县| 玉环县| 稻城县| 长垣县| 清流县| 饶河县| 建宁县| 禹州市| 福泉市| 信丰县|