固有的不可移植的特徵

2021-06-22 03:31:21 字數 1103 閱讀 7162

位域

當程式需要將二進位制資料傳遞給另乙個程式或硬體裝置的時候,通常使用位域,位域在記憶體中布局是和機器相關的。

typedef  unsigned int  bit;

class file;

作為類的private成員位域只能從成員函式的定義和類的友元訪問。

volatile限定符

volatile的確切含義與機器有關,只能通過閱讀編譯器文件來理解。

直接處理硬體的程式常具有這樣的成員,它們的值由程式本身直接控制之外的過程所控制。

例如,程式可以包含由系統時鐘更新的變數。當可以用編譯器的控制或檢測之外的方式改變物件值的時候,應該宣告為

volatile。

volatile是給編譯器的指示,指出對這樣的物件不應該執行初始化。

鏈結指示:extern "c"

編譯器一般必須產生不同的**來呼叫用其他語言編寫的函式

鏈結指示不能出現在類定義或函式定義的內部,必須出現在函式的第一次宣告上。

extern "c" size_t  strlen(const char*);

extern "c"

c++的cstring標頭檔案可以像這樣:

extern "c"

假定標頭檔案中的所有普通函式宣告都是用鏈結指示的語言編寫的函式。

編寫函式所用的語言是函式型別的一部分。

extern "c"  void f1(void(*)(int));

extern "c" typedef void fc(int);

void f2(fc*);

因為鏈結指示應用於乙個宣告中的所有函式,所以必須使用型別別名,以便將c函式的指標傳遞給c++函式。

C 固有的不可移植特性

為了支援底層程式設計,c 定義了一些固有的不可移植的特性,即因機器而異的特性,當將含有不可移植特性的程式從一台機器轉移到另一台機器上時,通常需要重新編寫該程式。類可以將其非靜態資料成員定義成位域,在乙個位域中含有一定數量的二進位制位。當乙個程式需要向其他程式或硬體裝置傳遞二進位制資料時,通常會用到位...

軟體固有的複雜性

brooks曾指出 愛因斯坦認為自然界必定存在著簡單的解釋,因為上帝不是反覆無常或隨心所欲的。軟體工程師沒有這樣的信仰來提供安慰。許多必須控制的複雜性是隨心所欲的複雜性。定義軟體的複雜性。軟體確實有較為簡單的軟體,系統簡單,沒有什麼複雜的變化,甚至不需要系統的學習,你就可以寫出乙個和他一樣的軟體或比...

C C 使用異或交換元素及固有的缺點

如下 brief swap 異或交換兩元素 author version 1.0 date 2020 1 4 bug 不能指向同乙個記憶體位址 param in a 輸入a param in b 輸入a return void void swap int a,int b 下面來解釋這段 首先基於兩個...