using namespace std
(間違いなくbad practice)と私のコードでを使用しています(the overloaded absolute functionを得るために)私はabs
関数を使用しています。具体的には、私のMWEは次のとおりです。私はusing namespace std;
行をコメントアウトした場合Absとnamespace 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;
}
は、出力が他の
abs(f) = 0
出力は、私は理解していない何
abs(f) = 0.4
があるです後者の場合、たとえstdlib.hでもint
が返されるabs
関数があるとすると、 "正しい" abs関数がどのように呼び出されますか?
実際にthis questionの2番目の答えは、using namespace std;
を使用すると、が十分でないと言います。です。これは本当ですか?私のMWEはこれに矛盾するようです。
私はLinux上でgcc-4.8を使用していますが、これはおそらく依存関係を解決するための最も問題のある組み合わせです。あなたは
using namespace std;
を使用する場合
再生できません。私のための作品、gcc 6.2.1 –
あなたのプログラムは私にとってもうまくいきます。これはコンパイラの問題でなければなりません。 – Yousaf
コンパイラ・バージョンgcc-4.8を含むように更新されました。 – MaviPranav