声明 SystemC 类型的向量 sc_fix
Declare vector of SystemC type sc_fix
我正在尝试制作 std::vector
类型的 sc_fix
。我知道我可以做到 std::vector<sc_fixed<WL,IWL, ...>> name;
。但是我想使用非模板版本sc_fixed
。但是我不确定如何实例化此向量并设置字和整数位长度,因为我无法将其声明为与模板版本相同。
我试过制作一个数组来填充相同类型的内存space,但这也给了我一个错误。
sc_fix* img_num (32, 15, SC_RND_ZERO, SC_SAT_ZERO);
img_num[0] = 12.12;
img_num[1] = 12.12;
img_num[2] = 12.12;
img_num[3] = 12.12;
std::vector<sc_fix> img (img_num, img_num+sizeof(img_num) / sizeof(img_num[0]));
这给了我错误
Main_Test.cpp: In function ‘int sc_main(int, char**)’:
Main_Test.cpp:24: error: initializer expression list treated as compound expression
Main_Test.cpp:24: error: cannot convert ‘sc_dt::sc_o_mode’ to ‘sc_dt::sc_fix*’ in initialization
make: *** [Main_Test] Error 1
是什么导致了这个错误,我该如何解决?
您必须在 sc_fix
之后删除 *
并声明一个 sc_fix
类型的变量,而不是指向 sc_fix*
的指针,并调用它的构造函数:
sc_fix img_num (32, 15, SC_RND_ZERO, SC_SAT_ZERO);
编译器试图初始化一个指针并抱怨提供了太多的初始化。
但我认为你想要做的是用 4 个数字分配向量:
std::vector<sc_fix> img_num (4, sc_fix(32, 15, SC_RND_ZERO, SC_SAT_ZERO));
img_num[0] = 12.12;
img_num[1] = 12.12;
img_num[2] = 12.12;
img_num[3] = 12.12;
我正在尝试制作 std::vector
类型的 sc_fix
。我知道我可以做到 std::vector<sc_fixed<WL,IWL, ...>> name;
。但是我想使用非模板版本sc_fixed
。但是我不确定如何实例化此向量并设置字和整数位长度,因为我无法将其声明为与模板版本相同。
我试过制作一个数组来填充相同类型的内存space,但这也给了我一个错误。
sc_fix* img_num (32, 15, SC_RND_ZERO, SC_SAT_ZERO);
img_num[0] = 12.12;
img_num[1] = 12.12;
img_num[2] = 12.12;
img_num[3] = 12.12;
std::vector<sc_fix> img (img_num, img_num+sizeof(img_num) / sizeof(img_num[0]));
这给了我错误
Main_Test.cpp: In function ‘int sc_main(int, char**)’:
Main_Test.cpp:24: error: initializer expression list treated as compound expression
Main_Test.cpp:24: error: cannot convert ‘sc_dt::sc_o_mode’ to ‘sc_dt::sc_fix*’ in initialization
make: *** [Main_Test] Error 1
是什么导致了这个错误,我该如何解决?
您必须在 sc_fix
之后删除 *
并声明一个 sc_fix
类型的变量,而不是指向 sc_fix*
的指针,并调用它的构造函数:
sc_fix img_num (32, 15, SC_RND_ZERO, SC_SAT_ZERO);
编译器试图初始化一个指针并抱怨提供了太多的初始化。
但我认为你想要做的是用 4 个数字分配向量:
std::vector<sc_fix> img_num (4, sc_fix(32, 15, SC_RND_ZERO, SC_SAT_ZERO));
img_num[0] = 12.12;
img_num[1] = 12.12;
img_num[2] = 12.12;
img_num[3] = 12.12;