SystemC遇到的C++小问题

  • “右尖括“”问题

      在 C++ 语言中,必须用空格来分隔两个连续的右尖括号 (>),否则这些右尖括号将解析为按位右移运算符 (>>)

比如:sc_signal<sc_int<3> > state;

否则vivado会出现语法错误,VS2010没有问题。



  • sc_fifo中使用自定义类型时,必须在类型中重载<<、==操作符以及重写sc_trace方法,否则出现编译器错误C2679等问题

  • 多重继承的时候要使用虚继承,比如write_if和read_if继承sc_interface,而ram_if又继承write_if和read_if,需要如下书写代码:
            class mem_read_if:virtual public sc_interface{
         class mem_write_if :virtual public sc_interface{
         class reset_if:virtual public sc_interface{
         class ram_if:virtual public mem_write_if<T>,virtual public mem_read_if<T>,virtual public reset_if<T>{


  • VS2010编译C++产生很大的sdf数据库文件的问题,以下是网上搜到的的解决方案

       vs2010打开某个工程 ,转换成功之后,在工程目录看见一个sdf文件和一个ipch文件夹,都超大(起码几十M),我一个四百多的工程,结果用vs打开过后变成了两百多兆。

      大家也许发现了,visual studio 2010 中新建一个项目会同时建立一个ipch目录与sdf文件,即使你删掉它,再次打开工程时还是会重新建立。动辄3050M的容量让我们心里很不爽。其实这 是2010的一个新功能,与智能提示,错误提示,代码恢复、团队本地仓库等等息息相关的东西。如果大家觉得很不爽可以关掉它。Tools —— Options —— Text Editor —— C/C++ —— Advanced ——Disable Database 设置为True,默认为false。这样,你关闭visual后删掉工程目录下的ipchsdf就不会再产生了

       但是这样的办法会产生另外的一些问题,可能会导致其他的一些功能不能使用。

       另外一种解决方法是:

       Tools->Options->Text Editor->C/C++->Advanced,在 Fallback Location 的属性组中,将"Always Use Fallback Location"设置为 true,将"Do Not Warn If Fallback Location Used" 设置为 true ,然后删除解决方案目录下的 sdf 文件和 ipch 目录,再次打开解决方案,发现这些烦人的东西已经不见了。

        那么那些文件放置到那里了呢?看 "Fallback Location" 属性说明:这是存储浏览信息数据库和 IntelliSense 文件的第二个位置,如果不指定则放置到临时目录中;到临时目录一看,里面有一个 VC++ 的目录,都在那个目录里面呢。

可以在 "Fallback Location" 属性中,设置一个固定的路径来存储这些文件,比如D:\VS2010Temp,这样也比较好管理这些庞大的臃肿的文件,可以定期清理掉它们,释放出硬盘空间!




相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页