說我使用using namespace std
(不可否認bad practice),並且我在我的代碼中使用abs
函數(得到the overloaded absolute function)。具體來說我MWE是:Abs和使用命名空間std
#include <cmath>
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char* argv[]) {
double f(-0.4);
std::cout<<"abs(f) = "<<abs(f)<<std::endl;
}
如果我註釋掉using namespace std;
線,則輸出
abs(f) = 0
否則輸出爲
abs(f) = 0.4
我不明白的是在後一種情況下,如何調用「正確的」abs函數,因爲即使stdlib.h有一個abs
函數只返回int
's。
其實第二回答this question說使用using namespace std;
可能不夠。這是真的?我的MWE似乎與此相矛盾。
我在Linux上使用gcc-4.8,這可以說是解決依賴關係時最成問題的組合。
無法重現。適用於我,使用gcc 6.2.1 –
您的程序對我來說工作正常。它必須是一個編譯器問題。 – Yousaf
已更新爲包含編譯器版本gcc-4.8。 – MaviPranav