error C2064: term does not evaluate to a function

黑夜愁客 2009-03-03 11:58:25
搞定了前面的实例化问题,发现了这个错误。
#ifndef __MUX_H
#define __MUX_H
#include <systemc.h>

SC_MODULE(Mux) {
public:
sc_in<int> select;
sc_in<int> data_in[8];
sc_out<int> data_out;

SC_CTOR(Mux) {
SC_THREAD(mux_function);
sensitive << select;
for ( int i=0 ; i<8 ; i++ )
sensitive << data_in[i];
};

private:
void mux_function() {
while (true) {
wait();
wait(1, SC_NS );
data_out = data_in[select.read()].read();
}
}
};
#endif

然后在RegFile.h调用这个类
#ifndef _REG_FILE_H
#define _REG_FILE_H
#include "systemc.h"
#include "stdio.h"

SC_MODULE(RegFile){
public:
sc_in<int> read_reg_1;
sc_in<int> read_reg_2;
sc_in<int> write_reg;
sc_in<int> write_data;
sc_in<bool> write_enable;
sc_out<int> reg_1;
sc_out<int> reg_2;
sc_in_clk clock;

SC_CTOR(RegFile){
for(int i=0;i<8;i++){
reg[i] = new Register("Register");
result[i] =0;
}
for(int i=0;i<2;i++){
mux[i] = new Mux("Mux");
}

bitdemux = new BitDemux("BitDemux");
datademux = new DataDemux("DataDemux");
SC_METHOD(do_read_action);
sensitive << clock.pos();
SC_METHOD(do_write_action);
sensitive << clock.neg();
}

void do_read_action(){
for(int k=0;k<8;k++){
result[k] = reg[k]->getValue();
}
mux[0]->data_in(result);//这里出错
mux[0]->select(read_reg_1);
reg_1 = mux[0]->data_out;

mux[1]->data_in(result);//这里出错
mux[1]->select(read_reg_2);
reg_2 = mux[1]->data_out;
}


找到一个论坛的说,把->换成.,试过了不行。我觉得很奇怪,其他的参数传递都可以唯独这个不行,是因为result是一个数组吗?
THX
...全文
3622 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoln1010 2011-11-05
  • 打赏
  • 举报
回复
我还是不知道
黑夜愁客 2009-03-28
  • 打赏
  • 举报
回复
我知道了.
黑夜愁客 2009-03-09
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 arong1234 的回复:]
看起来和C/C++无关的一个组织,不用相信他们,要相信标准

[/Quote]

arong1234 2009-03-04
  • 打赏
  • 举报
回复
看起来和C/C++无关的一个组织,不用相信他们,要相信标准
黑夜愁客 2009-03-04
  • 打赏
  • 举报
回复
hityct1 2009-03-03
  • 打赏
  • 举报
回复
SC_MODULE是啥?是类还是函数?
M_S_D_N 2009-03-03
  • 打赏
  • 举报
回复

SC_MODULE(Mux) {
...
}

SC_MODULE?这是什么语法?gcc中特有的?
黑夜愁客 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xtting_8984313 的回复:]
mux[0]->data_in(result)

to

mux[0]->data_in[result]

大概
[/Quote]

c:\documents and settings\admin\desktop\systemc\lab\register_file\reg_file.h(42) : error C2107: illegal index, indirection not allowed
不行,没有这样的语法啊~
黑夜愁客 2009-03-03
  • 打赏
  • 举报
回复
对啊,SystemC其他的example里面也这样
比如
mux[0]->select(read_reg_1);
这样就可以啊,应该解释成一个Channel,这里就是吧read_reg_1的数据连通到mux中的select端口
xtting_8984313 2009-03-03
  • 打赏
  • 举报
回复
mux[0]->data_in(result)

to

mux[0]->data_in[result]

大概
healer_kx 2009-03-03
  • 打赏
  • 举报
回复
mux[0]->data_in(result);//这里出错
??

data_in不是一个成员嘛? 不是函数啊,为什么看起来像是函数一样的调用它呢?
arong1234 2009-03-03
  • 打赏
  • 举报
回复
SystemC是什么东东?
黑夜愁客 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 M_S_D_N 的回复:]
C/C++ codeSC_MODULE(Mux) {
...
}
SC_MODULE?这是什么语法?gcc中特有的?
[/Quote]
看下SystemC
黑夜愁客 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 arong1234 的回复:]
你基本语法总得懂吧?!别得系统里错了,你不能照着错啊

引用 10 楼 yexin218 的回复:
引用 9 楼 arong1234 的回复:
data_in根本不是一个函数?你为什么把它当函数用?data_in(xxxxx)是非法使用data_in变量吧


我也不知道啊,
SystemC里面就是这样写的啊

[/Quote]

不是啊,我也觉得很奇怪。
我再试试看啊
arong1234 2009-03-03
  • 打赏
  • 举报
回复
你基本语法总得懂吧?!别得系统里错了,你不能照着错啊

[Quote=引用 10 楼 yexin218 的回复:]
引用 9 楼 arong1234 的回复:
data_in根本不是一个函数?你为什么把它当函数用?data_in(xxxxx)是非法使用data_in变量吧


我也不知道啊,
SystemC里面就是这样写的啊
[/Quote]
黑夜愁客 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 arong1234 的回复:]
data_in根本不是一个函数?你为什么把它当函数用?data_in(xxxxx)是非法使用data_in变量吧

[/Quote]
我也不知道啊,
SystemC里面就是这样写的啊
arong1234 2009-03-03
  • 打赏
  • 举报
回复
data_in根本不是一个函数?你为什么把它当函数用?data_in(xxxxx)是非法使用data_in变量吧
黑夜愁客 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hairetz 的回复:]
SC_MODULE(Mux) {
public:
sc_in <int> select;
sc_in <int> data_in[8];
sc_out <int> data_out;


楼主你好乱啊,
mux[0]->data_in(result);//这里出错
data_in的函数声明在哪里?如果不是函数,改成 mux[0].data_in[result];的话,你写个数据,然后没有操作.
比如我写了
int a;
a;  //这样对吗?
你能不能说说你那些地方的意图啊.
[/Quote]
data_in不是函数 是一个变量啊,sc_in <int> data_in[8];~ 我也搞不清了,作为模拟Mux的一个端口输入。
  • 打赏
  • 举报
回复
SC_MODULE(Mux) {
public:
sc_in<int> select;
sc_in<int> data_in[8];
sc_out<int> data_out;


楼主你好乱啊,
mux[0]->data_in(result);//这里出错
data_in的函数声明在哪里?如果不是函数,改成 mux[0].data_in[result];的话,你写个数据,然后没有操作.
比如我写了
int a;
a; //这样对吗?
你能不能说说你那些地方的意图啊.

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧