stringification

    0熱度

    1回答

    我已經得到了下面的宏定義以下特殊的命名方案的新功能: #define CREATE_HOOK_STUB(func) void ##func_STUB() { /* some code*/ } 然而,預處理總是串接void和##func_STUB,但我當然希望它在該位置保留空白。 我知道我可以預先給##func_STUB添加一些字符串,但這不是我想要的。 我會如何解決這個問題?

    6熱度

    7回答

    什麼是a##b & #a? #define f(a,b) a##b #define g(a) #a #define h(a) g(a) main() { printf("%s\n",h(f(1,2))); //how should I interpret this?? [line 1] printf("%s\n",g(f(1,2

    5熱度

    3回答

    我有這樣一個宏(不完全,但功能還是相當相當)GCC宏##連接符: #define STRUCTMEMBER(Member,Value) GlobalStructInstance. ## Member = Value ... STRUCTMEMBER(Item,1); 這工作完全在Visual C++,但gcc 3.4.5(MingGW)產生以下錯誤: pasting "." and "It

    2熱度

    3回答

    我在看一些開源項目,我看到以下內容: NSLog(@"%s w=%f, h=%f", #size, size.width, size.height) 到底是什麼尺寸符號之前對「#」是什麼意思?是字符串的某種前綴C?

    2熱度

    3回答

    我試圖做一些概念上類似於這個,但似乎無法得到它的工作(錯誤顯示在最後)任何想法? #include <stdio.h> int main(int argc , char const *argv[]) { int abc_def_ghi = 42; #define SUFFIX ghi #define VAR(prefix) prefix##_def_##SUFF

    82熱度

    13回答

    正如很多我以前提到的問題,我到K & R工作組,和我目前進入預處理。其中一個更有趣的事情—的東西我從來沒有從任何我以前嘗試之前就知道學習C —是##預處理程序操作。可以根據K & R: 預處理操作者## 提供了一種方法宏膨脹期間來連接實際 參數。如果在替換文本一個 參數是相鄰 到##,該參數是由 實際參數替換時, ##和周圍的白色空間中 去除,並且將結果重新掃描。 例如,宏paste 會將其兩個參

    40熱度

    5回答

    我正在尋找將預處理器令牌轉換爲字符串的方法。 具體來說,我在什麼地方了: #define MAX_LEN 16 ,我想用它來防止緩衝區溢出: char val[MAX_LEN+1]; // room for \0 sscanf(buf, "%"MAX_LEN"s", val); 我打開其他的方法來完成同樣的事情,但只有標準庫。