C巨集高階應用之

2021-07-05 00:20:59 字數 789 閱讀 2029

在巨集定義中經常看到#和## 現在講一下他們的用法

1,##是連線符:用於將兩個引數連線在一起

例如:#define a(x, y) x##y

則   a(he ,llo) 結果是hello

#define link(a)  my##a

則  link(god)  

相當於》mygod

「##」是一種分隔連線方式  他的作用是先分隔 然後強制連線 分隔作用相當於空格

例:試比較下列巨集定義的區別

例1    #define a1(name,type) type name_##type##_type

例2    #define a2(name,    type)   type name##_##type##_type

a1(a,int);相當於int name_int_type;

a2(a,   int);相當於int a_int_type

在第乙個巨集定義中##把name_##type##_type分成了三段 name_、  type、  _type      只有type是前面出現過的 所以它可以被替換

在第乙個巨集定義中##把name##_##type##_type分成了四段name、_、type、_type    name 和type是前面出現過的 所以它們可以被替換

2,#是「字串化」的意思 用在巨集定義中表示將#後面的引數轉換成字串

例:#define strcpy(x ,y)  strcpy(x,#y)

則:strcpy(buff,abc)

相當於 strcpy(buff,「abc」)

C 高階應用之Microsoft Vsa引擎篇

引擎實現部分 using system using system.collections using system.io using system.reflection using microsoft.visualbasic.vsa using microsoft.vsa 作者注 需要增加對micr...

C語言巨集的高階應用

關於 和 在c語言的巨集中,的功能是將其後面的巨集引數進行字串化操作 stringfication 簡單說就是在對它所引用的巨集變數通過替換後在其左右各加上乙個雙引號。比如下面 中的巨集 define warn if exp do while 0 那麼實際使用中會出現下面所示的替換過程 warn i...

C語言巨集的高階應用

c語言巨集的高階應用 關於 和 在c語言的巨集中,的功能是將其後面的巨集引數進行字串化操作 stringfication 簡單說就是在對它所引用的巨集變數通過替換後在其左右各加上乙個雙引號。比如下面 中的巨集 define warn if exp do while 0 那麼實際使用中會出現下面所示的...