完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,最近我用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个回答
|
|
SunCENoLi阶段不被定义为任何事物,它是0或Fuffy定义NoI阶段αIFIFF YESH阶段,定义“是”,“埃尔夫定义”(No期),定义“无”,定义NoI阶段1。
|
|
|
|
是的,您的观察是正确的,您也错过了一些东西:自1988年以来,C标准要求elif以这种方式工作。K&Rr的书在十年前首次出版,这本书一直都是如此。
|
|
|
|
是的,但是为什么无效的令牌错误?
|
|
|
|
因为它被定义和替换为“空”?
|
|
|
|
把它输入GCC,你得到不同的诊断:
|
|
|
|
嗨,谢谢你们的输入。我进一步研究了这一点,像“Kynnhan&Apple;里奇”这样的信息源解释说,没有一个标准的“yelelsif”。正如“MLP”张贴的那样,“γ-ELIF”在“我的例子中没有被正确使用”和“我的例子中没有正确使用”被缩短了。虽然StalIAL发布的两个改进都是正确的,并且两者都没有错误地编译,但对于我来说,更可读的版本将是这样的(缺点:更多LOC):有趣的是,CROs。其他平台的S-编译器已经接受了这个源,并且只有XC8报告了一个错误,我发现它是正确的,因为一个“如果”不能跟随“(没有)”。因此,作为结论,我发现,与一个IFIFF一起使用的αELIF,是一个虚假的朋友,应该避免,因为结果取决于编译器。也许这对其他人也有帮助。再次感谢所有捐助的人,问候哈拉尔德。
|
|
|
|
只有小组成员才能发言,加入小组>>
5142 浏览 9 评论
1990 浏览 8 评论
1918 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3159 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2215 浏览 5 评论
710浏览 1评论
598浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
481浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
610浏览 0评论
508浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 15:30 , Processed in 0.950123 second(s), Total 55, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号