[英]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;
這樣(假設a
和b
參數的類型為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.