2

systemcはもちろん、cppの経験もあまりありません。

なぜこれが機能しないのですか?

sc_in<sc_uint<8>> a,b;

adder.cpp:5: エラー: 'a' はこのスコープで宣言されていません
adder.cpp:5: エラー: 'b' はこのスコープで宣言されていません
adder.cpp:5: エラー: テンプレート引数の数が間違っています (2, 1)

これは機能します:

sc_in<int> a,b;
4

1 に答える 1

8

C++03 では>、右シフトを実行しようとしているとコンパイラが判断するため、2 つの文字を隣り合わせにすることはできません。

次に、あなたがこれを意味すると思って、本当に混乱します:

sc_in<sc_uint<(8 >> a), b;
//                  ^ ^ ^
//                  ? | ?   Compiler: "what are `a` and `b`?!"
//                    !     Compiler: "why two arguments?!"

そこまでたどり着いた場合>、皮肉なことに、前の 2 つの文字が欠落しているというエラーが表示され、最初の;場所に戻ってしまいます。

sc_in<sc_uint<8> >代わりに書く必要があります。

これは C++11 で修正されました。

于 2014-11-26T01:38:37.273 に答える