1

私は C++ プログラミングが初めてです。そこで、いくつかの小さなプログラムを実行して運試しをしました。私は、実行可能ファイルがaCCという名前のコンパイラを持つHP-UXで作業しています。

小さなプログラムを実行しようとしています

#include <iostream.h>
using namespace std;
class myclass {
public:
    int i, j, k; 
};

int main()
{
    myclass a, b;
    a.i = 100; 
    a.j = 4;
    a.k = a.i * a.j;
    b.k = 12; 
    cout << a.k << " " << b.k;
    return 0;
}

これをコンパイルすると、エラーが発生します。

 > aCC temp.cpp
Error 697: "temp.cpp", line 2 # Only namespace names are valid here.
    using namespace std;
                    ^^^

問題は正確には何ですか?stdaCC コンパイラで名前空間と見なされないか、aCC に重大な欠点がありますか?

を に変更する<iostream.h><iostream>、以下のようにさらにエラーが追加されます。

>aCC temp.cpp
Error 112: "temp.cpp", line 1 # Include file <iostream> not found.
    #include <iostream>
             ^^^^^^^^^^
Error 697: "temp.cpp", line 2 # Only namespace names are valid here.
    using namespace std;
                    ^^^
Error 172: "temp.cpp", line 14 # Undeclared variable 'cout'.
    cout << a.k << " " << b.k;
4

2 に答える 2

8

どのバージョンの aCC を使用していますか? 古いバージョンでは、すべてをグローバル名前空間に配置する標準化前の STL 実装を使用していました (つまり、std 名前空間を使用しませんでした)。

コンパイル時に -AA オプションを使用する必要がある場合もあります。これにより、HP の STL ライブラリの新しい 2.x バージョンを使用するようにコンパイラに指示されます。

>aCC -AA temp.cpp

そして、それは常にあるべきです

<iostream>  

<iostream.h> 

言語の先行標準実装からのものですが、通常は古いコードとの下位互換性を維持するために出荷されます。

于 2009-11-21T14:12:56.493 に答える
1

試してみてください:

#include <iostream>

それ以外の:

#include <iostream.h>

iostream.hは、すべての関数がグローバル名前空間で公開される古いスタイルのヘッダーです。このような場合、std 名前空間はおそらく iostream.h ヘッダー (このコンパイラでは) によって公開されないため、名前空間 std を使用しても機能しない可能性があります。上で説明したように、新しいスタイルの C++ 標準ライブラリ ヘッダーである # include を試してください。(コメントをしてくれたShailesh Kumarに感謝します!回答に含めました)。

于 2009-11-21T14:08:04.383 に答える