1

我正在使用 gcc 的预处理器从 verilog (.v) 文件中删除注释(因为注释语法与C /C++ 相同)。我正在使用 perl,因此使用了我的 perl 脚本中的 shell 命令

gcc -E $dest > $commentsrem

我的 verilog 文件在哪里$dest 重命名为 .c 文件。由于预处理器将数据输出到标准输出,我将它重定向到一个名为$commentsrem . 现在我面临的问题是我在终端上收到消息说

try.c:577:未终止的字符常量

我猜这是因为虽然在C 语言中您需要使用 '\' 来在新行上继续声明,但 verilog 没有这样的要求。这就是它正在报告的内容。

现在,尽管有这些,它实现了我想要的,但它让终端变得混乱。有什么办法让它保持安静?

4

2 回答 2

1

将标准错误重定向到空设备将使预处理器的所有错误输出静音。通常不推荐,因为您也不会看到真正的错误。

gcc -E $dest > $commentsrem 2> /dev/null

更好的方法是使用 过滤来自 stderr 的已知grep -v消息,这样您仍然会看到其他错误消息。为此,您需要将 stderr 重定向到 stdout,因为管道在 stderr 上不起作用:

gcc -E $dest 2>&1 > $commentsrem | grep -v "unterminated character constant"

重定向的顺序在这里很重要。如果你写了> $commentsrem 2>&1,错误信息最终会出现$commentsrem

有关重定向的详细信息,请参阅。这个问答

于 2012-06-11T07:21:05.480 回答
1

由于您使用的是 Perl,因此vppreproc脚本可用于删除 Verilog 注释。

vppreproc --nocomment in.v > out.v
于 2012-06-11T13:43:01.223 回答