-8

我无法在 centos 6.4 linux 中编译 Verilog2C++ 的源代码。请从这里下载源代码。它的下载非常简单。

http://verilog2cpp.sourceforge.net/

运行 make 命令时出现以下错误

verilog.l:435: error: 'assert' was not declared in this scope

当我注释掉所有断言语句时。我遇到了这些我无法修复的错误

Verilog.cc: In constructor 'moe::Verilog::Number::Number(const char*)':
Verilog.cc:224: error: invalid conversion from 'const char*' to 'char*'
Verilog.cc:230: error: invalid conversion from 'const char*' to 'char*'
Verilog.cc:245: error: invalid conversion from 'const char*' to 'char*'

下面是来自 Verilog.cc 文件的代码片段

  Verilog::Number::Number(const char* text):
    text_(text)
  {
    static const char* BIN_NUM ="01XZ";
    static const char* OCT_NUM ="01234567XZ";
    static const char* HEX_NUM ="0123456789ABCDEFXZ";

    vector<char> bits;
    const char* ptr;

    ...

    char* idx;
    ptr =text+strlen(text)-1;
    for( ;*ptr!='\'';ptr-- )
      {
        switch( base )
          {
          case 2:
            idx =index(BIN_NUM,toupper(*ptr)); //THIS LINE CAUSES ERROR
            if( idx!=NULL )
              if( bits.size()<width )
                bits.push_back( *idx );

由于缺乏 C/C++ 知识,我无法解决此问题

你能帮我编译并成功运行程序吗?

4

2 回答 2

3

看起来代码有问题,所以新的编译器拒绝编译它。

编辑代码并使用

const_cast<char*> (variablename)

删除变量的常量。

于 2013-11-06T15:45:08.877 回答
0

通过在具有旧版本 gcc 的旧机器上编译代码然后将可执行文件带到新机器上解决了问题。它工作得很好。

感谢克劳迪奥的提示。

于 2013-11-06T17:58:29.870 回答