名前空間はC言語で名前の重複が起こることを念頭に導入されました。名前の重複については後に詳しく述べますが、複数人でプログラムを作成した時同じ名前の関数があると、リンカが用いる関数を把握できなくなり、エラーが出るという問題です。名前空間はこれを回避するために導入されました。