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

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

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

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

基礎知識回歸總結整理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 - 靜態庫文件 .so - 共享庫(動態庫)文件

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 - 優化等級。

7. 編譯多個源程序

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

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

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

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

包含頭文件時需要注意:

1) gcc的-I選項

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

2) #include <…>

先找-I指定的目錄,再找系統目錄。

3) #include “…”

先找-I指定的目錄,再找當前目錄,最后找系統目錄。

4) 頭文件的系統目錄

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

8. 預處理指令

~~~~~~~~~

#include // 將指定文件的內容插至此指令處#include_next // 與#include一樣, // 但從當前目錄之后的目錄查找,極少用#define // 定義宏#undef // 刪除宏#if // 判定#ifdef // 判定宏是否已定義#ifndef // 判定宏是否未定義#else // 與#if、#ifdef、#ifndef結合使用#elif // else if多選分支#endif // 結束判定## // 連接宏內兩個連續的字符串# // 將宏參數擴展成字符串字面值#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環境變量 ~~~~~~~~

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

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

# gcc calc.c cpath.c -I.

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

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

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

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

頭文件的三種定位方式:

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


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

圖片精選

主站蜘蛛池模板: 沁水县| 芒康县| 东阿县| 政和县| 洛扎县| 上栗县| 凤凰县| 襄垣县| 鄱阳县| 伊宁市| 安阳市| 宁城县| 肇州县| 公安县| 仁化县| 驻马店市| 河池市| 北流市| 安远县| 高碑店市| 洞口县| 浦东新区| 宣威市| 炉霍县| 肥东县| 武宁县| 汝阳县| 湖南省| 甘肃省| 基隆市| 墨脱县| 武宣县| 郓城县| 阿巴嘎旗| 赤城县| 沈丘县| 久治县| 横山县| 博罗县| 会同县| 民权县|