web-dev-qa-db-ja.com

cstdlibとstdlib.hの違いは何ですか?

C++コードを記述するとき、次の間に違いがあります。

#include <cstdlib>

そして

#include <stdlib.h>

前者がほとんどstd::名前空間に含まれている以外は?

コーディング標準とスタイルを使用して他のものを使用する以外の理由はありますか?

47
Free Wildebeest

1つ目はC++ヘッダーで、2つ目はCヘッダーです。最初のものは名前空間を使用するため、それが望ましいと思われます。

45
Brendan Long

いいえ、名前空間の状況を除いて、それらは本質的に同一です。

15
Jerry Coffin

コーディング標準とスタイルを使用して他のものを使用する以外の理由はありますか?

はい。 stdlib.hdeprecatedであるという事実は、それを使用しない非常に良い理由です。実際、1998年に登場した最初の標準では廃止されました。確かに、C++ 14にも存在し、おそらくC++ 17にも存在しました(C++ 17標準にアクセスできません)。非推奨であるため、使用しないことを強くお勧めします。削除のリスクはそれほど高くないかもしれませんが、新しいコードの作成中に回避するのが非常に簡単なのに、なぜそれを危険にさらすのでしょうか?

C++ 14標準 から:

これらは非推奨の機能であり、非推奨は次のように定義されます:標準の現在の版では規範的ですが、将来のリビジョンからの削除の候補としてとして識別されています。

...

cstdlibの代わりにstdlib.hを使用するには、かなり強力な引数が必要です。

3
klutt