#include <iostream>
int main() {
std::cout << abs(-5.3) << "\n";
}
使用g ++进行编译时,它会显示5,我得到了-重载的Abs位于std
中,而我没有使用它。
但是,如果我使用Visual Studio编译器(19.14.26433),则结果为5.3。
如果我添加std
,则VS没问题,g ++要求cmath
。
例如system
:system("foo")
相同。 VS编译器没问题,但是g ++再次需要std
。
在VS中,这并不是隐含的using namespace std
,因为如果没有cout
,其他函数(例如std
)将无法编译。
因此,VS编译器默认包含std
中的某些特定功能吗?是否在某处列出了它们?还是这里还有其他事情?
答案 0 :(得分:0)
好像我已经找到问题的一半, Igor Tandetnik是正确的。
math.h
和cmath
在Visual C ++中的实现方式有所不同,第一个具有int abs(int)
,第二个具有其他类型的重载功能。不需要std。
iostream包括cmath。
哦,我的傻瓜...