Microchip
直播中

孟佳

7年用户 151经验值
私信 关注
[问答]

XC8构建的C代码出错

嗨,最近我用XC8构建了一个C代码,我通常用另一个编译器构建它。然后我注意到XC8的预处理器有一个奇怪的地方。想象一个代码是这样的:据我所知,一个“#elif”被正确地用于跟随一个#ifdef。到达第二个ELIF时,PREPROC应该进行评估,如果第二个字符串被定义并继续下去。好了,MPLABX环境正确地灰色了“是”-部分,这告诉我,语法正确地使用在这里。但是当使用XC8(v1.37)编译这段代码时,会抛出一个错误:“BLABLA1:26:error:(1500)#if表达式中的无效令牌”。将第一行改为“YES_STAGE”也使用XC8编译代码时不会出错,因为前置程序不评估第二阶段。对我来说,XC8似乎把这个“#elif”读为“.-if.#if”,而不是“.-ifdef.ifdef”。我的观察是正确的还是我错过了什么?谢谢您,

回帖(6)

李恩佳

2020-3-5 09:41:25
SunCENoLi阶段不被定义为任何事物,它是0或Fuffy定义NoI阶段αIFIFF YESH阶段,定义“是”,“埃尔夫定义”(No期),定义“无”,定义NoI阶段1。
举报

尹星

2020-3-5 09:53:14
是的,您的观察是正确的,您也错过了一些东西:自1988年以来,C标准要求elif以这种方式工作。K&Rr的书在十年前首次出版,这本书一直都是如此。
举报

tijing忽忽

2020-3-5 10:12:45
是的,但是为什么无效的令牌错误?
举报

李兆峰

2020-3-5 10:29:43
因为它被定义和替换为“空”?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分