gpt4 book ai didi

c++ - #if 在函数内部

转载 作者:行者123 更新时间:2023-11-28 03:54:49 25 4
gpt4 key购买 nike

任何人都可以向我解释 epsilon 这个术语是什么,尽管我没有在我的头文件中使用它。喜欢

Right (const lPoint& a, const lPoint& b, const lPoint& c, double epsilon)
{
#if _NOT_USED_EPSILON
return (( (a.x_ * b.y_) - (a.y_ * b.x_) +
(a.y_ * c.x_) - (a.x_ * c.y_) +
(b.x_ * c.y_) - (c.x_ * b.y_) ) < 0);
#else
/* return (( (a.x_ * b.y_) - (a.y_ * b.x_) +
(a.y_ * c.x_) - (a.x_ * c.y_) +
(b.x_ * c.y_) - (c.x_ * b.y_) ) < -SPATIAL_EPSILON);*/
if( epsilon == -1 )
return (b.x_-a.x_)*(c.y_-a.y_)-(c.x_-a.x_)*(b.y_-a.y_) < -SPATIAL_AREA_EPSILON;
else
return (b.x_-a.x_)*(c.y_-a.y_)-(c.x_-a.x_)*(b.y_-a.y_) < -epsilon;
#endif
}

在这里我没有在我的文件中使用 epsilon 而不是我们说 #if _not_used_epsilon 而不是返回这个....而我的 epsilon 默认为 0 因为它的 mot 已初始化。但如果使用条件和她的常量,它会使用 din,因为它不会改变 arguemnt 的值。对!

这个#if不会被函数内部的编译器读取我想问一下#directory是否被编译器读取..我没有得到#directories..为什么我们使用它我们可以用变量起诉简单的if条件正如我们在函数中使用的那样,那么为什么 #directory inside main.. 谁来处理它编译器..

最佳答案

这段代码很简单。这是做什么的?

如果预处理器符号 _NOT_USED_EPSILON 已定义(通过 make 文件、命令行)等,则检查表达式是否小于 0。

在某些情况下(因为 double 运算会失去精度),如果表达式的值明显接近 0,则可以检查它。

如果需要这样的精度运算,那么 make 文件将取消定义预处理器符号 _NOT_USED_EPSILON

在这种情况下,将使用函数的最后一个参数 (epsilon) 的值检查表达式。

请注意,_NOT_USED_EPSILON 不会被编译器读取,而是一个预处理器指令。

在 OP 中,只有在定义了 _NOT_USED_EPSILON 时,下面的代码才会被编译,否则不会。

return (( (a.x_ * b.y_) - (a.y_ * b.x_) + 
(a.y_ * c.x_) - (a.x_ * c.y_) +
(b.x_ * c.y_) - (c.x_ * b.y_) ) < 0);

关于c++ - #if 在函数内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4040840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com