C宏的可选[]方括号
是否可以为宏设置可选的C宏的可选[]方括号,c,preprocessor,C,Preprocessor,是否可以为宏设置可选的[/d]参数 我当前的宏与此类似 DO_SOMETHING(Student,marks) add_marks(Student,marks) 现在,有时Student是一个数组或单个变量,所以要在Student元素上使用宏,我的宏是否可以处理这个问题 DO_SOMETHING(Student[10],80) as well as DO_SOMETHING(student,80) 最快的解决方案是修改函数add_marks,使其具有类似指针的输入参数,这样问题就解决了 ad
[/d]
参数
我当前的宏与此类似
DO_SOMETHING(Student,marks) add_marks(Student,marks)
现在,有时Student是一个数组或单个变量,所以要在Student元素上使用宏,我的宏是否可以处理这个问题
DO_SOMETHING(Student[10],80) as well as DO_SOMETHING(student,80)
最快的解决方案是修改函数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) */
宏只是用你告诉它的内容来替换匹配的代码,所以在你的例子中,你最终会得到
添加标记(学生[10],80)
和添加标记(学生,80)
-然后是否编译取决于添加标记
是什么。不要使用宏,使用以数组为参数的函数。如果您只需要更改单个项目,请将大小1传递给函数。如果您用示例代码演示您的意思,这个答案会更好。