C 中 和 的使用

2021-10-02 03:52:23 字數 1298 閱讀 4234

# 和 ## 在巨集定義(define)中經常可以看到,是預編譯過程中的常用語句,本文介紹 # 和 ## 的區別。

先簡單地將這兩個符號進行標籤化,然後再記錄具體實驗。

# — 轉換,完成**到字串的轉換。

## — 連線,完成**的連線。

#和##運算子

#:構串操作符

構串操作符#只能修飾帶引數的巨集的形參,它將實參的字串行(而不是實參代表的值)轉換成字串常量

#define string(x) #x#x#x

#define text(x) "class"#x"info"

//巨集引用:

int abc =

100;

string

(abc)

;text

(abc)

;

//替換結果:

abcabcabc

classabcinfo

##:合併操作符

合併操作符##將出現在其左右的字串行合併成乙個新的識別符號

注意:使用合併操作符##時,自身的識別符號必須預先有定義,否則編譯器會報「識別符號未定義」的編譯錯誤。

字串行合併成新的識別符號不是字串。

#define class_name(name) class##name

#define merge(x,y) x##y##x

//巨集引用:

class_name

(timer)

merge

(me,to)

//替換結果:

classtimer

metome

#define string(x) #x#x#x 

#define text(x) "class"#x"info"

#define class_name(name) class##name

#define merge(x, y) x##y##x

void

metome()

void

classtimer()

intmain()

輸出:

abcabcabc 

classabcinfo

*****====

-----

在其他文章裡,可能你還會找到 ## 可以拼接字串, # 也可以。但是實測結果是,在 linux 環境中,無法正常編譯。所以為了**的通用性,最好還是僅將 # 和 ## 作上述兩種用途。當然在這個基礎之上可以有很多的擴充套件。

C 中 和 的使用

和 在巨集定義 define 中經常可以看到,是預編譯過程中的常用語句,本文記錄了本人探索 和 區別以及使用的內容 先簡單的將這兩個符號進行標籤化,然後再記錄具體實驗。轉換,完成 到字串的轉換 連線,完成 的連線 示例 1.轉換 為字串 define convert name name int ma...

C 中 和 的使用

和 在巨集定義 define 中經常可以看到,是預編譯過程中的常用語句,本文記錄了本人探索 和 區別以及使用的內容 先簡單的將這兩個符號進行標籤化,然後再記錄具體實驗。轉換,完成 到字串的轉換 連線,完成 的連線示例 1.轉換 為字串 cpp define convert name name int...

C 當中 和 的使用

c 是我們許多人在步入程式設計的時候的第乙個入門語言。但是,這個語言當中也有好多難以理解的概念。在這裡簡單介紹一下兩種位址符號。在介紹這兩個符號之前,我們先說明一下c 當中的兩個概念,變數和位址。變數裡存在兩個值,乙個是變數在記憶體中存著的位置,也就是位址,另外乙個就是這個變數的值,存在記憶體當中。...