1. 程式人生 > >【2018.10.11 C與C++基礎】C Preprocessor的功能及缺陷(草稿)

【2018.10.11 C與C++基礎】C Preprocessor的功能及缺陷(草稿)

repr 繼承 logs 作用域 ces 變量 找到 可變參數 體系

一、前言及參考資料

C Preprocessor即所謂的C預處理器,C++也繼承了C的預處理程序,但在C++語言的設計與演化一書中,C++的設計者Bjarne Strustrup提及他從未喜歡過C預處理器,認為C預處理器尤其是其中的宏定義存在許多缺陷,破壞了程序設計語言的類型系統及變量的作用域邊界等等,但是語言設計者卻很難為預處理中的各種功能找到具有更好結構而又高效的替代品。

我們知道在編譯C/C++程序時,一般會經過預處理、編譯、匯編、鏈接這四個階段。

其中預處理在編譯過程中發揮著不可替代作用,可以改善程序結構、完善程序功能、增強可擴展性、自動生成專為特定體系結構配置而調整的代碼等,但是預處理在文本替換、名稱連接、條件編譯、命名空間、代碼冗余等很多方面存在文法以及語義上的缺陷,從而導致所開發的軟件系統重用性不高,難以對軟件進行維護配置等。

C Preprocessor的基本功能包括:

1. 文件包含,#include文件包含將在預處理階段從其他文件中復制程序正文;

2. 宏定義,#define定義的無參數宏及可變參數宏等;

3. 條件編譯,#ifdef等指示字可以控制在編譯過程中是否包括一些代碼;

4. 控制特定的實現方式,#pragma用於設定編譯器的狀態或者為編譯器指定與平臺相關的編譯處理方式。

參考資料:

1. C宏系統缺陷 https://www.cnblogs.com/cheukyin/p/4571928.html

2. C中的預處理器 https://www.xuebuyuan.com/3248462.html

3. 詳解C/C++預處理器 https://blog.csdn.net/qq_22642239/article/details/80525409

【2018.10.11 C與C++基礎】C Preprocessor的功能及缺陷(草稿)