C 之 可變引數的使用 井號

2021-10-05 12:44:47 字數 675 閱讀 4889

#:字串化

##:字元連線

巨集展開有順序,且只展開一次

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

#define tochar(x) #@x

#define tostring(x) #x

x##y表示x連線y

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

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

#@x給x加上單引號,結果返回是乙個const char。舉例說:

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

#x給x加雙引號

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

##__va_args__巨集,即可變引數的…

##__va_args__ 巨集前面加上##的作用在於,當可變引數的個數為0時,

這裡的##起到把前面多餘的","去掉的作用,否則會編譯出錯

有些編譯器不支援__va_args__巨集

C 中乙個井號和兩個井號的使用

define warn if exp do while 0 那麼實際使用中會出現下面所示的替換過程 warn if divider 0 被替換為 do while 0 2.被稱為連線符 concatenator 用來將兩個token連線為乙個token。注意這裡連線的物件是token就行,而不一定是...

C 之可變引數,ref,out

1 可變引數 在c 4.0中增加了許多新的特性,這裡我主要說一下 可變引數陣列 int sum params int values int sum string name,params int values 注意 可變引數陣列必須是最後乙個,而且可變引數是c4.0中才有的特性。引數預設值 c 4.0...

關於C之可變引數

之前的文章有提到過變參巨集,即該巨集可以接受可變數量的引數。stdarg.h 標頭檔案為函式提供了乙個類似的功能,但是用法比較複雜。必須按如下步驟進行 1.提供乙個使用省略號 一定是最後的引數 的函式原型 2.在函式定義中建立乙個va list型別的變數 3.用巨集把該變數初始化為乙個引數列表 4....