2015-04-29 30 views
0

我有兩段代碼需要運行。 (不,我不允許改變他們中的任何一個)。在導致錯誤時使用do定義C++宏

第一塊定義一個宏

#define MACRO do { /* stuff in multiple lines and do not return a value */ } while (0) 

第二件使用另一個宏在if聲明

if (ANOTHER_MACRO) { /* do some stuff */ } 

我需要ANOTHER_MACRO使用MACRO,我能定義ANOTHER_MACRO

我認爲一個inline函數是正確的方式來做到這一點,但既不使用宏,也不使用函數我可以得到它的工作。有什麼建議麼?

+0

所以你需要做的東西里面的條件,而不是隻提供一個條件? – chris

+0

你爲什麼甚至浪費時間與宏?這是C++,而不是C,並且年份是2015年,而不是1985年 - 使用(內聯)函數。 –

+0

嘗試內聯或lambda表達式... – FalconUA

回答

1

只需插入一個函數,在一邊調用MACRO並在另一邊返回一個值。

+0

我曾嘗試過這種方式作爲內聯函數,但它像宏一樣抱怨語法。一個真正的函數定義解決了這個問題,謝謝 – lulijeta

+1

@lulijeta如果你也想知道你爲什麼嘗試不起作用,你需要將它添加到你的問題中,以及它產生的編譯器錯誤。 – Quentin