C++定义宏可以将浮点文字重写为双字面值,还是至少删除后缀?

hus*_*sik 0 c++ macros

#ifdef DOUBLE_PRECISION_COMPUTE
    #define MAKE_PRECISE(N) ...
#endif
// if not defined, leave as it is. MAKE_PRECISE(N) (N)
Run Code Online (Sandbox Code Playgroud)

上面的宏(用右边的redifiniton替换"......")可以进行下面的操作吗?

double PI=MAKE_PRECISE(3.14159265359f);
Run Code Online (Sandbox Code Playgroud)

double PI=3.14159265359;

double area= MAKE_PRECISE(3.14159265359f)*r*r;
Run Code Online (Sandbox Code Playgroud)

double area= 3.14159265359*r*r;
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 6

没有.

无法使用预处理程序指令转换令牌.

相反,通过删除f源代码来更正文字.

无论如何,结果将比在一些MAKE_PRECISE宏中包装所有内容更容易阅读,而这些内容还不清楚发生了什么.