小编ant*_*ane的帖子

C++ ---这些数学函数/常量不应该是未定义的吗?

我不希望以下代码打印出sin(pi/2)的值,而不包含额外的头:

#include <iostream>

int main()
{
    std::cout << sin(0.5*M_PI) << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

并且,正如预期的那样,在编译时我得到一个错误读取‘sin’ was not declared in this scope和类似的错误使用M_PI.

但是,我很困惑的事实是,如果我包含看似任何 提升库标题,请仅举例lexical_cast.hpp,而不是运行

#include <iostream>
#include <boost/lexical_cast.hpp>

int main()
{
    std::cout << sin(0.5*M_PI) << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后代码工作,它打印1.

为什么要包含这个不包含M_PIor的定义的boost头,sin()允许定义这个常量和函数?我不应该包含一个标题,就像math.h包括这些东西一样有效吗?

c++ boost

3
推荐指数
1
解决办法
96
查看次数

标签 统计

boost ×1

c++ ×1