我刚开始学习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
这里有什么奇怪的是使用宏。内联函数会更合适。 –