1. ホーム
  2. c++

[解決済み] cmath vs math.h(そして同様のc接頭辞付き拡張子ヘッダーと.h拡張子ヘッダー)。

2022-01-30 21:22:16

質問

などの違いに関する情報を目にしたことがあります。 iostreamiostream.h . 私がそれらから得た情報では、両者の違いは .h 拡張子は名前空間を生成しませんが、拡張子付きのバージョンでは生成されます。

の場合も同じですか? cmathmath.h ? なぜ cmath (そして他の多くの同様のファイル)の先頭に c でなく、単に math ? 両者の違いはもっとあるのでしょうか?

解決方法は?

<ブロッククオート

iostreamとiostream.hのような違いについての情報を見たことがあります。

[iostream.h]は標準のヘッダーではありません。

は、あなたが提起している問題の例ではありません。

[cmath]では、シンボルの定義が std 名前空間で定義され、グローバル名前空間でシンボルを定義することもできます。[math.h] グローバルな名前空間のシンボルを定義し、さらに、そのシンボルを std 前者をインクルードして未修飾のシンボルを使用した場合、あるコンパイラではコンパイルできるが、別のコンパイラではできない可能性があります。したがって、[math.h]を使うのがよいでしょう。

c++98では、c++98で提供されていたc xxx しかし、これはグローバル名前空間を汚染するものよりも実装が少し難しく、実際には私の知る限りどの標準ライブラリ実装もこの点で標準に従わなかったので、c++11でようやく現実を反映するように変更されたのです。