C 中 和 的使用

2021-10-03 07:29:30 字數 1093 閱讀 6565

# 和 ## 在巨集定義(define)中經常可以看到,是預編譯過程中的常用語句,本文記錄了本人探索 # 和 ## 區別以及使用的內容

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

# -- 轉換, 完成**到字串的轉換

## -- 連線, 完成**的連線

示例:

1. # 轉換**為字串

```cpp

#define convert(name) #name

intmain

(int argc,

char

* ar**)

這裡, james 將在預編譯過程中被轉換為字串 「james」 。

```cpp

#define cat(batman, robin) batman ## robin

#define make_friend(index) printf("you and %s are friends.\n", cat(james, index));

int main(int argc, char* ar**)

首先,這裡仍需要將 001、007、110 看作是**,而不是數字。

然後再說,通過 cat 將 james 和 index 拼合成為 james001、james007、james110 三個變數(**),在 print 過程中列印出來。
後續:

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

#include

using

namespace std;

#define f(x, y) x##y

#define f2(x) cout<< "c"#x#x intmain()

C 中 和 的使用

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

C 中 和 的使用

和 在巨集定義 define 中經常可以看到,是預編譯過程中的常用語句,本文介紹 和 的區別。先簡單地將這兩個符號進行標籤化,然後再記錄具體實驗。轉換,完成 到字串的轉換。連線,完成 的連線。和 運算子 構串操作符 構串操作符 只能修飾帶引數的巨集的形參,它將實參的字串行 而不是實參代表的值 轉換成...

C 當中 和 的使用

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