首先,先介紹前置處理器是甚麼?
前置處理器是編譯過程中的一個階段,用於在代碼編譯前對其進行處理。它的主要功能包括替換、文件包含和條件編譯。通過替換,前置處理器可以用簡單的標識符替代複雜的代碼片段;文件包含允許將多個源文件合併成一個;條件編譯則根據不同的條件選擇性編譯代碼段。這些功能有助於提高代碼的靈活性和可維護性。
程式小練習(變數交換):
#include <iostream>
#define SWAP(x,y,t) (t=x, x=y, y=t)
using namespace std;
int main(void)
{
int x=3,y=4,temp;
SWAP (x,y,temp);
cout<<"x = "<<x<<"y = "<<y<<endl;
return 0 ;
}
小講解:
這段程式碼定義了一個SWAP(x, y, t)用來交換兩個變數 x和 y的值。temp用作臨時變數,宏的作用是將 x的值賦給 t,y 的值賦給 x,最後將 t的值賦給 y。在 main函數中,x和 y分別初始化為 3和 4,然後使用 SWAP 交換它們的值。結果輸出 x = 4和y = 3。
在C/C++中,以下預處理指令用於條件編譯和錯誤處理:
#if:檢查條件是否為真,決定是否編譯代碼塊。
#else:與 #if 搭配,條件不成立時編譯對應代碼。
#elif:提供額外條件選擇。
#ifdef:檢查宏是否已定義,已定義時編譯對應代碼。
#ifndef:檢查宏是否未定義,未定義時編譯對應代碼。
#error:生成編譯錯誤信息,提示錯誤或不符合條件。
程式小練習一(計算圓面積):
#include <iostream>
#define A(r) (double)(r)*(r)*3.1415
using namespace std;
int main (void)
{
int r;
cin>>r;
cout<<A(r)<<endl;
return 0;
}
小講解:
A(r)接受一個半徑 r,計算公式為 π * r^2,這裡使用了 3.1415 近似值。main 函數讀取一個整數 r代表圓的半徑,並輸出計算得到的圓面積。
程式小練習二(圓周長、圓面積、圓球面積程式):
#include <iostream>
#define round
#define volume
#define R(r) (double)2*(r)*3.1415
#define A(a) (double)(r)*(r)*3.1415
#define V(v) (double)4/3*(r)*(r)*(r)*3.1415
using namespace std;
int main(void)
{
int r;
cin>>r;
#if defined round
cout<<R(r)<<endl;
#endif
#if defined area
cout<<A(r)<<endl;
#endif
#if defined volume
cout<<V(r)<<endl;
#endif
return 0;
}
小講解:
R(r)計算圓周長,A(a)計算圓面積,V(v)計算球體體積。程式會計算並顯示圓周長和球體體積。
!!此篇章是看第一次學C++就上手第二版第十章跟著做學習!!