簡體   English   中英

如何從C中的MACRO函數返回一個字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM