[英]How to return a string from a MACRO function in C?
我想根據作為MACRO FUNCTION參數傳遞的值創建一個字符串。 就像是:
#define ABC(x,y) return "anystr_x_y.tar.bz2"
main()
{
a = ABC(2,3);
}
所以最后,它應該返回“anystr_2_3.tar.bz2”
我想知道如何使用作為MACRO fnc參數傳遞的值創建該字符串。
任何幫助! 謝謝 !
使用“stringize operator”定義您的宏,如下所示:
#define ABC(x,y) "anystr_" #x "_" #y ".tar.bz2"
宏不返回東西,因為它們不是函數。 它們僅僅是令牌替換功能。 你真正想要的只是一個,而在你的位置,我會用一個函數來做。 但是,解決方案可能如下所示:
#define ABC(x,y) "anystr_" #x "_" #y ".tar.bz2"
這可以利用字符串文字折疊到更高的事實,因此"Hello " "World!"
被解釋為"Hello World!"
。
在C(也不是C ++)中沒有宏功能這樣的東西。 在編譯代碼之前,宏由預處理器處理。 上面的示例代碼將由編譯器處理:
main()
{
a = return "anystr_x_y.tar.bz2"
}
要實現您要執行的操作,您需要告訴預處理器連接x,y和字符串的常量部分。 您可以使用##運算符執行此操作,例如:
#define ABC(x,y) ("anystr_" ## x ## "_" ## y ## ".tar.bz2")
這將導致以下代碼傳遞給編譯器:
main()
{
a = ("anystr_2_3.tar.bz2")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.