systemc构造函数和普通C ++构造函数之间的主要区别是什么?我们可以私下声明systemc构造函数吗?

时间:2018-11-27 12:44:06

标签: systemc

在系统c程序中工作时,我错过了构造函数之前的public关键字,但是该程序运行良好。 但是在C ++中,它会引发错误

1 个答案:

答案 0 :(得分:1)

SystemC要求模块构造函数的第一个参数应为sc_module_name。除此之外,没有什么特别的。 SystemC宏SC_MODULESC_CTOR只是为您节省了一些时间,但是您不需要使用它们。

SC_MODULE( dut ) {
    SC_CTOR(dut) { }
};

等效于:

struct dut : sc_core::sc_module {
    typedef dut SC_CURRENT_USER_MODULE;
    dut(::sc_core::sc_module_name) {}
};

请注意,默认情况下struct个成员是公共的,默认情况下class个成员是私有的。如果您使用class而非struct,则需要通过显式添加public:使其公开:

class dut : public sc_core::sc_module {
    typedef dut SC_CURRENT_USER_MODULE;

public:
    dut(::sc_core::sc_module_name) {}
};