C 中的巨集定義

2021-08-14 10:22:33 字數 712 閱讀 4081

二、define中的三個特殊符號:#,##,#@

#define conn(x,y) x##y

#define tochar(x) #@x

#define tostring(x) #x

(1)

x##y

表示什麼?表示x連線y,舉例說:

int n = conn(123,456); /* 結果就是n=123456;*/

char* str = conn("asdf", "adf"); /*結果就是 str = "asdfadf";*/

(2)再來看#@x,其實就是給x加上單引號,結果返回是乙個const char。舉例說:

char a = tochar(1);結果就是a='1';

做個越界試驗char a = tochar(123);結果就錯了;

但是如果你的引數超過四個字元,編譯器就給給你報錯了!

error c2015: too many characters in constant   :p

(3)最後看看#x,估計你也明白了,他是給x加雙引號

char* str = tostring(123132);就成了str="123132";

c 中的巨集定義

一 不帶引數的巨集定義 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串 其中的識別符號就是所謂的符號常量,也稱為 巨集名 預處理 預編譯 工作也叫做巨集展開 將巨集名替換為字串。掌握 巨集 概念的關鍵是 換 一切以換為前提 做任何事情之前先要換,準確理解之前就要 換...

C中的巨集定義

01 防止乙個標頭檔案被重複包含 ifndef comdef h define comdef h 標頭檔案內容 endif 02 重新定義一些型別,防止由於各種平台和編譯器的不同,而產生的型別位元組數差異,方便移植。typedef unsigned char boolean boolean valu...

C 中的巨集定義

1 stringizing 字串化操作符。其感化是 將巨集定義中的傳入引數名轉換成用一對雙引號括起來引數名字串。其只能用於有傳入引數的巨集定義中,且必須置於巨集定義體中的引數名前。xmlnamespace prefix o ns urn schemas microsoft com office of...