2014-09-03 62 views
0

C在C中做了什麼?特別是在的#define這樣C:#define FOO中的第二個#是什麼#s

#define FOO(s) #s 
+3

這是「字符串化操作」,僅在預處理器宏替換使用。 – 2014-09-03 21:25:39

+0

@Michal Canecky:你最喜歡的C書對此有何評論? – AnT 2014-09-03 21:39:49

回答

1

MSDN documentation

的數符號或「字符串化」操作符(#)宏 參數到字符串文字轉換不會擴大參數 定義。它僅用於帶有參數的宏。如果 先於宏定義中的形式參數,則宏調用傳遞的實際參數 將包含在引號 中,並視爲字符串文字。然後,字符串文字將在宏定義中替換每個出現的字符串操作符和形式 參數的組合。

上面鏈接的頁面包含一些用於比較的實際示例。

1

它使一個字符串,因此

#define FOO(s) #s 
FOO(hello) 

相同

"hello" 
相關問題