何時需要將括號中的整個(右)表達式放在括號中?定義宏的括號
如果我這樣做
#define SUM(x, y) ((x)+(y))
我必須把正確的表達成括號,因爲「+」擁有℃時的低優先級(如果我將在使用它,它不會工作以下內容SUM(x, y) * 5U
)
如果我使用最高優先級的運算符,這些括號是否仍然需要
#define F foo()
甚至
#define ACCESS(x, y) (x)->(y)
是否表達存在,這將打破,因爲它會爲SUM()
例如做實際的意義呢?)
爲我所用http://en.cppreference.com/w/c/language/operator_precedence
優先規則
我不知道*必要*,但我仍然稱它爲好習慣。如果某人(比如說)爲'f'宏添加一個修正因子來(不管)規範化'foo'的輸出,並忘記添加括號?你會花很多時間去弄清楚出了什麼問題。 – Linuxios