首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在SystemVerilog宏中包含",“逗号

如何在SystemVerilog宏中包含",“逗号
EN

Stack Overflow用户
提问于 2022-09-13 07:14:39
回答 1查看 32关注 0票数 0

其中有包含",“逗号的参数,例如,在一个参数中包含num、val、int。

例如,“定义ACTION_DO”(num,val,int)

它实际上是作为一个参数传递的,是否有任何方法在代码中包含",“逗号,而不会被编译器单独假定为3个参数?

EN

回答 1

Stack Overflow用户

发布于 2022-09-13 12:45:02

不幸的是,没有很好的通用方法来处理宏中包含逗号的单个参数。有几种可能在您的使用模式中可能适合,也可能不适合:

  1. 引用字符串,这些字符串总是作为单个参数来处理,
  2. 参数列在父或方括号中。但在这种情况下,括号和大括号将成为参数的一部分:

下列措施将起作用:

代码语言:javascript
运行
复制
`define PRINT(A) $display A
... 
`PRINT(("a=%b, b=%b, c=%b", a, b, c));

它将扩展到$display ("a=%b, b=%b, c=%b", a, b, c)

下面的将导致编译中的失败

代码语言:javascript
运行
复制
`define PRINT(A) $display("a=%b b=%b c=%b", A)
`PRINT((a, b, c));

因为扩展$display("a=%b b=%b c=%b", (a,b,c))在语法上是错误的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73698881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档