我不希望以下代码打印出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包括这些东西一样有效吗?