【问题标题】:Optional [] square brackets for a C MacroC 宏的可选 [] 方括号
【发布时间】:2019-04-19 12:59:43
【问题描述】:

是否可以为宏提供可选的[/d] 参数?

我当前的宏做了类似的事情

DO_SOMETHING(Student,marks) add_marks(Student,marks)

现在有时 Student 是一个数组或单个变量,所以在学生元素上使用宏是否可以由我的宏处理?

DO_SOMETHING(Student[10],80) as well as DO_SOMETHING(student,80)

【问题讨论】:

  • 宏只是用你告诉它的内容替换匹配的代码,所以在你的例子中你最终会得到add_marks(Student[10],80)add_marks(student,80) - 然后是否会编译取决于@987654326 @是。
  • 不要使用宏,使用以数组为参数的函数。如果您只需要更改单个项目,请将 size 1 传递给函数。

标签: c preprocessor


【解决方案1】:

最快的解决办法是修改函数add_marks,让它有指针一样的输入参数,问题就解决了。

add_marks(type *ptr, int size)
#define DO_SOMETHING(Student,marks)
/* in case of array DO_SOMETHING(Student,marks)
in case of variable DO_SOMETHING(&Student,marks) */

【讨论】:

  • 如果你用示例代码演示你的意思,这个答案会更好。
猜你喜欢
  • 2010-10-20
  • 1970-01-01
  • 2021-07-22
  • 2011-11-03
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 2012-06-04
相关资源
最近更新 更多