每一個c++函式必須有一個建構器,對於普通的c++函式來說,預設的建構器是自動產生的,但是每個SystemC module必須有一個獨有的name,因此構造器至少有一個參數。
為了方便聲明和定義module的constructor,SystemC提供了一個SC_CTOR
- 只能出現在C++允許宣告構造器的地方,用於constructor的宣告或定義
- 僅有一個參數,即module的name
- 這個構造器並不能加入使用者定義個參數,若需要傳遞額外的參數,應明確定義constructor
這裡給出範例程式碼
#include <systemc>
using namespace sc_core;
SC_MODULE(MODULE_A) {
SC_CTOR(MODULE_A) {
SC_METHOD(func_a);
}
void func_a() {
std::cout << name() << std::endl;
}
};
SC_MODULE(MODULE_B) {
SC_CTOR(MODULE_B) {
SC_METHOD(func_b);
}
void func_b();
};
void MODULE_B::func_b() {
std::cout << this->name() << std::endl;
}
SC_MODULE(MODULE_C) {
const int i;
SC_CTOR(MODULE_C);
MODULE_C(sc_module_name name, int i) : sc_module(name), i(i) {
SC_METHOD(func_c);
}
void func_c() {
std::cout << name() << ", i = " << i << std::endl;
}
};
int sc_main(int, char*[]) {
MODULE_A module_a("module_a");
MODULE_B module_b("module_b");
MODULE_C module_c("module_c",1);
sc_start();
return 0;
}
沒有留言:
張貼留言