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;
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 で修正されました。