SystemC言語の文法について質問です。
ある雑誌で、ビット宣言変数のアドレスを関数に渡しており、
私も真似て作ってみたのですが、エラーが発生してしまいます。
---
(例) 引数にポインタを入れる処理
// 引数 sc_uint<32> *s の関数
void test::Calc_func( sc_uint<32> *s )
{
cout << "s[0] = " << s[0]; // 32bitのデータ出力?
}
// これがmain文の代わりです
void test::A_func(void)
{
sc_biguint<2048> a;
sc_uint<12> i;
for( i = 0; i < 2048; i++ ) {
a[i] = 0;
}
Calc_func( &a[0] ); // ←問題!
}
// Error内容
Calc_funcの引数の入れ方が駄目!
---
色々、Calc_funcへの型を変えてやってみたのですが、
全くびくともしません。
雑誌が間違っている可能性は低いと思いまして、
今回、このような質問をさせていただきました。
インターネット上の情報でも、このような処理を
見つけることができませんでした。
どうぞよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
SystemCに関してよく理解できている訳ではないので、以下は間違っているかも知れませんが、一応、ご参考までに。
sc_biguint<2048> a;
これは2048ビット符号無し整数の型宣言なのでaは2048ビットとなりますが、
sc_uint<32> *s
では、sは32ビット符号無し整数のポインタです。
&a[0]は上記より2048ビットの数値のポインタなので、32ビットの数値のポインタであるsとは、元々合わないのではないでしょうか?
型変換とは具体的にどの様な事をされたかは分かりませんが、SystemCはハードウエアを記述していますので、ハードウエア、例えば2048ビットのレジスタと32ビットのレジスタが同じ扱いにはならないという意味ではないかなと思います。
ご回答ありがとうございます。
PCトラブルで確認するのが遅くなってしまいました。
なるほど・・・型違いのエラーであることは承知していたのですが、
2048bit型の"整数の型宣言”というところを改めてご指摘をもらい、
何か道筋が見えたような気がします。
雑誌では、このポインタ関数に関する入力ソースがなかったので、
普通に入れてしまえばよいのかと思いましたが、確かにおかしいです。
結局のところ、この32bit引数の関数にアドレスを入れるためには、
2048bitを32bitに分割しながら代入しなければならないような気がしてきました。
一度試してます。
bit宣言というのに違和感があり、従来のCやC++の考え方ができなくなっていました。
貴重な助言、ありがとうございました。
No.1
- 回答日時:
SystemCって勝手にC++を拡張しているみたいなんで若干自信がないんですが
Cで
ポインタ
と
配列
と
配列の0番目
と
&演算子
というのはどういうことかをもう一度確認したほうがよいと思います。
ほぼCプログラマが最初につまづくところでなおかつCの一番基本なのでしっかり確認してプログラミングに望んでください。
ご回答ありがとうございます。
PCトラブルで確認するのが遅くなってしまいました。
C言語であれば理解しているのですが、
bit宣言におけるポインタ渡しなんて初めてみたもので。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# c言語 配列とポインタについて 3 2023/02/09 22:53
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- C言語・C++・C# Cのオブジェクトファイルの逆アセンブル 5 2023/05/13 01:51
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のポインタに直接アドレス...
-
C言語の関数と配列に関する質問
-
fopne で失敗する原因
-
メモリのアドレスからの値の取...
-
init関数の意味
-
戻り値で構造体を返すことは可...
-
エラーの意味
-
参照型で受け取った引数をポイ...
-
【VC++2005(CLR)】マルチスレッ...
-
TCHAR文字列内の検索について
-
セグメントエラー
-
ポインタのアドレス範囲
-
【なぜポインタを使うのか】
-
C言語のプログラムをJavaに...
-
ポインタ変数の利用方法
-
コンストラクタでnewを失敗した...
-
クイックソートの比較交換回数...
-
ポインタのミスでOS壊れるの...
-
デバイスハンドルとは?
-
#define NULL ((void *)0) の弊害
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
戻り値で構造体を返すことは可...
-
fopne で失敗する原因
-
C言語の関数と配列に関する質問
-
Run-Time Check Failure #3とい...
-
LPSTR型の初期化について
-
ExcelVBAでのkernel32(64bit)
-
main(int argc,char **argv[])...
-
アプリを32bitから64bit移行
-
ハンドルはポインタか
-
連結リスト 要素の入れ替え
-
C言語でのconstを返す関数
-
Cで作成したDLL関数をVBから呼...
-
NULLとブランクの違い
-
エラーの意味
-
ハンドル、アドレス、ポインタ...
-
DLL<->VB間での受け渡し(文字...
-
【C言語】戻り値が構造体の関数
おすすめ情報