2

多数のレガシーCコードを継承し、GCC(g ++)を使用してLinuxでコンパイルするために移植中です。将来的にはC++を使用する予定であり、とにかく「カスタム」ライブラリヘッダーファイル(およびコンパイラの警告)を修正しているので、新しいC++スタイルのヘッダーを使用するように古いCヘッダーを更新しても安全です。

だから

#include <cstdlib>

それ以外の

#include <stdlib.h>

私の知る限り、この2つの違いは、cstdlibのstd::名前空間にあることだけです。

これを悪い考えにするものはありますか?

4

2 に答える 2

1

名前空間を除いて、それらは(ほとんどのシステムで)まったく同じです。

于 2012-08-31T19:37:40.057 に答える
1

C が異なる名前を使用する場合、C++ 標準ヘッダーはオーバーロードを使用するため、コードは非常に微妙な方法で変更される場合があります。これは、 で問題を引き起こす可能性が最も高いcmathです。

stdlib.hどこにも行きませんので、安心してご利用ください。

たとえば、次のように比較します。

#include <iostream>
using namespace std;

#include <stdlib.h>
#include <math.h>

int main(void)
{
    double x = -2;
    cout << (3/abs(x)) << endl;
    return 0;
}

どちらの場合もまったく同じ C++ コンパイラとオプションが使用されていても、C++ ヘッダーに切り替える前後の結果は大きく異なります

于 2012-08-31T19:45:55.587 に答える