簡體   English   中英

如何在C / C ++中包含宏的行的末尾添加語句?

[英]How to add a statement at the end of a line containing a macro in C/C++?

為了減少要寫入的行數,我通過以下方式使用宏:

#define FUNC(a, b)  func(a, b, threadId, sizeof(a)); \
                      do something 1;                 \
                      do something 2;    

這很好用,因為我只需要使用對函數調用(具有4個參數)和2個或更多其他語句進行編碼的宏(具有2個參數)。

當此函數調用是另一個函數的參數時,就會出現問題。 例如,假設我需要以下代碼:

func1(par1, func(a, b, c, d));
do something 1;
do something 2;

有沒有一種方法可以使用宏或其他替代方法來實現? 即我期望的是這樣的:

func1(par1, FUNC(a, b)); //This statement(using macros) should transform into the above code after the preprocessing step. 

我不確定您實際上要實現什么,但是請替換為:

#define FUNC(a, b)  func(a, b, threadId, sizeof(a)); \
                  do something 1;                 \
                  do something 2;  

這樣(假設ab參數的類型為int ):

int FUNC(int a, int b)
{
  int returnvalue = func(a,b,threadId, sizeof(a));
  do something 1;
  do something 2;
  return returnvalue;
}

應該做的工作。

您可以嘗試使用方括號{}隔離代碼。 但是您的想法不是我建議的,因為代碼變得很難理解和調試。

#define FUNC(a, b) { func(a, b, threadId, sizeof(a)); \
                      do something 1;                 \
                      do something 2; }

但是,如果您嘗試將其作為參數發送給另一個函數,則它仍然無法工作,因為您沒有返回任何要用作參數的內容(沒有地址,沒有值)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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