C C 語言中的 和 的作用

2021-08-28 11:06:33 字數 992 閱讀 7203

經常遇到c/c++巨集定義中的#,#的用法分為兩種:#和##

#表示將巨集定義中的引數變成字串

##表示將巨集定義中的引數變成字串連在一起

例子: 

#include #define str(a)       #a

#define func(a, b) a##b

int main()

輸出:

ahello

解釋:#a 將a轉為了字串,所以輸出的不是1,而是a

a##b將輸入的引數a b連線為字串ab,而變數ab為字串型別,值為hello,所以輸出的是hello

需要注意的是有#或者##的地方,不會將引數展開了

例如:

#include #define pi           3.14

#define str(a) #a

#define f(t,f) t##f

int main()

輸出:

pi56

3.14

解釋:沒有將pi解釋,直接將pi轉為字串了

56輸出正常與下面的輸出對比,p和i沒有轉義,而是直接輸出pi,因為pi為3.14,所以輸出的是3.14

解決方法:加一層中間轉換層

#include #define pi           3.14

#define _str(a) #a

#define str(a) _str(a)

#define _f(t,f) t##f

#define f(t,f) _f(t,f)

int main()

輸出:

3.14

563.14

C C 語言中Static的作用詳述

在c語言中,static的字面意思很容易把我們匯入歧途,其實它的作用有三條。1 先來介紹它的第一條也是最重要的一條 隱藏。當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。為理解這句話,我舉例來說明。我們要同時編譯兩個原始檔,乙個是a.c,另乙個是main.c。...

C C 語言中Static的作用詳述

在c語言中,static的字面意思很容易把我們匯入歧途,其實它的作用有三條。1 先來介紹它的第一條也是最重要的一條 隱藏。當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。為理解這句話,我舉例來說明。我們要同時編譯兩個原始檔,乙個是a.c,另乙個是main.c。...

static關鍵字(C C 語言中的作用)

類中靜態成員注意事項 1 類中靜態成員分為 靜態資料成員 和 靜態成員函式。2 靜態資料成員與全域性物件的區別 1 static成員的名字是在類的作用域中,可以避免命名衝突。2 static資料成員可以是私有成員,而全域性物件不可以。3 static成員遵循正常的訪問規則。4 類中static資料成...