Syntax C宏语法错误(C18编译器)

Syntax C宏语法错误(C18编译器),syntax,macros,pic,c18,Syntax,Macros,Pic,C18,我在编译这个宏时遇到语法错误。我必须使用宏,因为C18不支持函数内联。使用常规函数调用会导致编译器的ISR开销大得多(通常大约是10条汇编指令,函数调用会变成50条) 我检查过了,没有尾随空格 #define INCREMENT_IDX(puIdx,uMax) uMax--;\ if (*puIdx <= uMax)\ {\

我在编译这个宏时遇到语法错误。我必须使用宏,因为C18不支持函数内联。使用常规函数调用会导致编译器的ISR开销大得多(通常大约是10条汇编指令,函数调用会变成50条)

我检查过了,没有尾随空格

#define INCREMENT_IDX(puIdx,uMax)  uMax--;\
                                   if (*puIdx <= uMax)\
                                   {\
                                       (*puIdx)++;\
                                       if (*puIdx > uMax)\
                                       {\
                                           *puIdx = 0;\
                                       }\
                                   }\
                                   else\
                                   {\
                                       return(FALSE);\
                                   }\
                                   return(TRUE);
多谢各位



没关系,我找到了答案。问题是我在“调用”宏时使用另一个宏作为“输入参数”。因为它是一个宏,所以它只是一个替换,所以不会创建内部/临时变量

因此,我通过这样做修复了它:

unsigned char uIndex, uMax = MAX_QUEUE_SIZE;
INCREMENT_IDX(&uIndex, uMax)
unsigned char uIndex, uMax = MAX_QUEUE_SIZE;
INCREMENT_IDX(&uIndex, uMax)
谢谢大家!:)

附言:我试图回答这个问题以关闭它,但在发布8小时之前我做不到。
所以,我把答案放在这里。

没关系,我找到了答案。问题是我在“调用”宏时使用另一个宏作为“输入参数”。因为它是一个宏,所以它只是一个替换,所以不会创建内部/临时变量

因此,我通过这样做修复了它:

unsigned char uIndex, uMax = MAX_QUEUE_SIZE;
INCREMENT_IDX(&uIndex, uMax)
unsigned char uIndex, uMax = MAX_QUEUE_SIZE;
INCREMENT_IDX(&uIndex, uMax)

谢谢大家!:)

没关系,我找到了答案。问题是我在“调用”宏时使用另一个宏作为“输入参数”。因为它是一个宏,所以它只是一个替换,所以不会创建内部/临时变量。所以,我通过这样做修复了它:unsigned char uIndex,uMax=MAX\u QUEUE\u SIZE;增量_IDX(&uIndex,uMax);谢谢大家。尽管你们在回答自己的问题,但习惯上还是把它作为一个答案,并接受答案。否则,它将始终显示为一个未回答的问题,未来的开发人员可能无法找到他们需要的解决方案。嗨,Tevo,很抱歉花了太长时间,我只是在这段时间后重新登录。我只是按照你的建议把我的发现作为答案。