我剛開始學習C++。請原諒這樣的問題。 我的任務是編寫一個宏來計算周長並對其進行測試。C++:宏似乎有點奇怪
#define _USE_MATH_DEFINES
#include <cmath>
#define LENGTH(radius) (2 * M_PI * radius)
float l1 = LENGTH(1 + 2); // The result should be 18.8495... I have 8.28. Incorrect result.
float l2 = 1/LENGTH(2); // The result should be 0.07957... Working correctly.
我增加了額外的對parenthethis的:
float l1 = LENGTH((1 + 2)); // Correct result.
怎麼能寫出這樣一個宏,我得到無需添加額外的括號正確的結果?
你可以做的最好的事情是編寫一個'constexpr'(或不)函數。 – Griwes
這裏有什麼奇怪的是使用宏。內聯函數會更合適。 –