define巨集定義

2021-08-03 07:34:47 字數 874 閱讀 3167

#include 

#include

#define sub(x,y) x - y

#define access_before(element, offset, value) *sub(&element, offset) = value

using

namespace

std;

int main() ;

access_before(array[5], 4, 6);

for(i = 0; i < 10; i++)

巨集定義被替換成了:*&array[5] - 4 = 6

&array[5]表示array[5]的位址

*&array[5]表示array[5]

相當於array[5] - 4 = 6,由於左邊是乙個表示式,所以編譯會報錯

如果想讓程式正確的執行,需要將巨集定義部分改為:

#define min(a, b) ((a) <= (b) ? (a) : (b))
注意事項:

1. #define定義的函式會直接嵌入到**中

2. 三重條件操作符?: 代替if

3. 在巨集定義中,用括號把引數小心地括起來

4. 不能以分號結束

define巨集定義

預處理指令 以 開頭的行,都預處理指令,用於指示編譯器做一些預處理工作。比如 include h 注 預處理指令不是語句,行尾不要加分號 define的兩種用法 1.定義乙個 數值 2.定義乙個 算式 注 工程中應該避免使用這兩種方式 定義乙個值 define pi 3.14 int main 定義...

巨集定義 define

巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串 其中的識別符號就是所謂的符號常量,也稱為 巨集名 預處理 預編譯 工作也叫做巨集展開 將巨集名替換為字串。1 define printx printf d n x 在c程式中,以 字元開頭的 都是一條c預處理器語句。預...

define巨集定義

c 中的巨集定義詳解 如何用 define巨集定義多行函式 c 中 需要訪問類a的私有成員變數,如何實現 1.define private public 採用巨集定義,巨集定義在預處理階段被替換,因此使用巨集定義函式時要特別注意優先順序問題,所以編譯之前private已經變成public了。incl...