一 C 相關知識簡介

2021-06-22 14:42:06 字數 1326 閱讀 5756

一、版本簡介

1. c++98:iso/iec 14882:1998

命名空間:std

最古老版本的c++標準

2. c++03:iso/iec 14882:2003

命名空間:std

3. tr1:c++ technical report 1

命名空間:std::tr1

作為c++03的擴充套件,但是其中一些最終被引入c++11

因為tr1只是c++03的擴充套件,因此編譯器本身不強制要求支援tr1。但是tr1中的大部分內容都在boost::tr1中有體現。

4. boost:

命名空間:boost

boost是基於c++03實現的乙個增強版的c++庫,他的很多庫已經被引入tr1,tr2,而tr1中大部分的內容已經引入c++11。

5. c++11(c++0x):iso/iec 14882:2011

命名空間:std

引入大部分tr1的內容

6. tr2:

c++ technical report 2

作為c++11的擴充套件

二、c++編譯器

1. 編譯器的結構

frontend用於做語法分析,將程式語言轉化成中間語言。

backend用於將中間語言轉化成機器語言。

gcc4.2的前端和後端都是gcc自己來實現的。

llvm-gcc的前端是gcc,後端是llvm

llvm compiler,也就是clang,前端是clang,後端是llvm

llvm本身是乙個後端

3. gcc與g++的區別

gcc:gnu compiler collection,本身是乙個工具集

g++:c++ compiler,因此是gcc的乙個子集,g++自動使用libstdc++,實際上g++還是用的gcc

4. libstdc++與libc++

mac下,前者使用的c++版本是c++03,後者是c++11,使用c++03編譯的庫與使用c++11的庫abi不相容

abi不相容:

4.1. 如何檢視乙個二進位制使用的lib:

otool -l

4.2. mac使用c++11編譯程式:

./configure cc=clang cxx=clang++ cxxflags='-stdlib=libc++' 

C語言相關知識

在linux系統之中,eof根本不是乙個字元,而是當系統讀取到檔案結尾,所返回的乙個訊號值 也就是 1 linux中,在新的一行的開頭,按下ctrl d,就代表eof 如果在一行的中間按下ctrl d,則表示輸出 標準輸入 的快取區,所以這時必須按兩次ctrl d windows中,ctrl z表示...

C 繼承相關知識

在物件導向的程式設計中,有兩種截然不同繼承型別 實現繼承和介面繼承 1.實現繼承和介面繼承 實現繼承 表示乙個型別派生於基型別,它擁有該基型別的所有成員欄位和函式。在實現繼承中,派生型別採用基型別的每個函式的實現 除非在派生型別的定義中指定某個函式的實現 在需要給現有的型別新增功能,或許多相關的型別...

git 相關知識 一

git常用命令 git config list 檢視配置 git config global user.name username 設定使用者名稱 git config global user.email email example.com 設定郵箱 global引數 表示這台機器上所有的git倉庫...