13 c c 程式設計師面試寶典 巨集定義

2021-07-07 05:31:57 字數 1319 閱讀 9070

13.c/c++程式設計師面試寶典-巨集定義

巨集定義又稱為巨集代換、巨集替換,簡稱巨集。巨集有時候並不是很受程式設計師的歡迎,但是它有乙個最重要的作用就是可以自動產生**。處理好巨集定義很重要,使用巨集定義可以防止出錯,提高可移植性、可讀性和方便性等。

面試題75  巨集定義與操作符的區別**

分析:巨集定義是c語言開始提供的3種預處理功能的其中一種。這3種預處理分別是:巨集定義、檔案包含和條件編譯。

巨集定義的語法格式為:#define《識別符號》《字串》,其中的識別符號就是所謂的符號常量,也稱為「巨集名」。預處理(預編譯)工作也叫做巨集展開,即將巨集名替換為字串。

單的巨集定義將乙個識別符號定義為乙個字串,源程式中的該識別符號均以指定的字串來代替。預處理命令後通常不加分號。這並不是說所有的預處理命令後都不能有分號出現。由於巨集定義只是用巨集名對乙個字串進行簡單的替換,因此如果在巨集定義命令後加了分號,將會連同分號一起進行替換。

帶引數的巨集定義格式為:#define《巨集名》(《參數列》)《巨集體》,其中,《巨集名》是乙個識別符號,《參數列》中的引數可以是乙個,也可以是多個,視具體情況而定,當有多個引數的時候,每個引數之間用逗號分隔。《巨集體》是被替換用的字串,巨集體中的字串是由參數列中的各個引數組成的表示式。

巨集定義與操作符的區別:巨集定義是替換,不做計算,也不做表示式求解。另外巨集定義的替換在編譯前進行,所以它不占用記憶體。巨集的展開不佔執行時間,只佔編譯時間,而操作符則佔執行時間。

【答案】巨集定義時c++的預處理命令之一,它是乙個替換操作,不做計算和表示式求解,不占用記憶體和編譯時間。

面試題76 巨集定義如何展開***

分析:具有巨集呼叫的源程式被彙編時,匯程式設計序將對每個巨集呼叫進行巨集展開。巨集展開實際上是用巨集定義時設計的巨集體去代替巨集指令名,並且用實際引數一一取代形式引數。

乙個巨集展開的示例**如下,原始的**macro.cpp:

#include

#include

#define to_string_macro(x)  #x

#define a_testing_macro(n)  printf("a testing macro with a int argument n=%d!\n",n)

#define show_macro_content(m)  to_string_macro(m)

//定義了3個不同的巨集

using namespace std;

int main()

以上**在巨集展開後的**macro.i如下:

using namespace std;

int main()

【答案】巨集展開是用巨集定義時設計的巨集體去代替巨集指令名,並且用實際引數一一取代形式引數。

C C 程式設計師面試寶典 2

9.關聯式資料庫的正規化 10.資料庫操作中的事務 事務的4個特性 11.數字矩陣的生成 對應的 如下 include include include define print arr2d arr,n else print arr2d arr,n 1 2 6 7 15 3 5 8 14 16 4 9...

程式設計師面試寶典 6 1巨集定義中的錯誤

程式設計師面試寶典 第四版第六章6.1節巨集定義的面試例題1 下面 輸出結果是多少?define sub x,y x y define access before element,offset,value sub element,offset value int main access before...

程式設計師面試寶典 C C 記憶體分類

在進行c c 程式設計時,需要程式設計師對記憶體的了解比較精準。經常需要操作的記憶體可分為以下幾個類別。棧區 stack 由編譯器自動分配和釋放,存放函式的引數值 區域性變數的值等。其操作方式類似於資料結構中的棧。堆區 heap 一般由程式設計師分配和釋放,若程式設計師不釋放,程式節束時可能由操 作...