2
我有下面的宏这是应该得到一个struct CLEAR_ARG
,并设置一些值吧:宏定义恶意宏
#define POLICY_ARG_SET((CLEAR_ARG), ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8) \
CLEAR_ARG->arg1= ARG1 \
CLEAR_ARG->arg2 = ARG2; \
CLEAR_ARG->arg3 = ARG3; \
CLEAR_ARG->arg4 = ARG4; \
CLEAR_ARG->arg5 = ARG5; \
CLEAR_ARG->arg6 = ARG6; \
CLEAR_ARG->arg7 = ARG7; \
CLEAR_ARG->arg8 = ARG8;
,但我得到macro definition malformed for macro
警告出于某种原因。
我用宏没有括号在(CLEAR_ARG)
,并与
POLICY_ARG_SET((&clear_arg),...)
设置的结构,但我不想总是担心括号。为什么我会得到这个警告,以及如何解决?
良好的渔获物。将所有内容放入'do {...} while(0)'子句中,或者至少省略最后一个';'以使所有内容更加适合“通常”C上下文。 –