C語言中「 「和「 「的用法

2021-10-07 17:47:53 字數 1203 閱讀 8411

1. 前言

使用#把巨集引數變為乙個字串,用##把兩個巨集引數貼合在一起.

2. 一般用法

#include

#include

using namespace std;

#define str(s)     #s

#define cons(a,b)  int(a##e##b)

int main()

3. 注意事項

當巨集引數是另乙個巨集的時候,需要注意的是凡巨集定義裡有用』#』或』##』的地方巨集引數是不會再展開. 

即, 只有當前巨集生效, 引數裡的巨集!不!會!生!效 !!!!

3.1 舉例

#define a          (2)

#define str(s)     #s

#define cons(a,b)  int(a##e##b)

printf("int max: %s\n",  str(int_max));    // int_max #include

printf("%s\n", cons(a, a));                // compile error --- int(aea)

兩句print會被展開為:

printf("int max: %s\n","int_max");

printf("%s\n", int(aea));

3.2 解決方案

解決這個問題的方法很簡單. 加多一層中間轉換巨集. 加這層巨集的用意是把所有巨集的引數在這層裡全部展開, 

#define a           (2)

#define _str(s)     #s

#define str(s)      _str(s)          // 轉換巨集

#define _cons(a,b)  int(a##e##b)

#define cons(a,b)   _cons(a,b)       // 轉換巨集

結果:printf("int max: %s\n",str(int_max));

//輸出為: int max:0x7fffffff

//str(int_max) -->  _str(0x7fffffff) 然後再轉換成字串; 

printf("%d\n", cons(a, a));

//輸出為:200

//cons(a, a) -->  _cons((2), (2))  --> int((2)e(2))

C語言中 和 用法

一 基本的用法 1 引數名以 作為字首則結果將被擴充套件為由實際引數的帶引號的字串。如 12 3456 78 define dprint expr printf expr d n expr intmain 上面的例子會列印出 a b 2 2 預處理器運算子 為巨集提供了一種連線實際引數的手段。如果替...

C語言中 和 的用法

今天在看freertos 看到如下 開機初始化 log create module template,print level info 巨集定義 define log create module module,level log control block t log control block m...

C語言中 和 的用法

使用 把巨集引數變為乙個字串,用 把兩個巨集引數貼合在一起.include includeusing namespace std define str s s define cons a,b int a e b int main 當巨集引數是另乙個巨集的時候,需要注意的是凡巨集定義裡有用 或 的地方...