完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我在C中编写代码,但需要与包含文件通信。如何在源代码中包含包含文件的定义?我必须创建一个头文件,它反映了包含文件吗?如果是,有没有办法将头文件与包含文件合并?,或者可能从包含文件生成头文件?
|
|
相关推荐
19个回答
|
|
|
包括什么文件?里面有什么?
|
|
|
|
|
|
您可以包括任何类型的文件(h/inc/...),只要其内容尊重“C”语法和语义规则。h扩展名和“header”名称只是约定,不是强制性规则。但是遵守这些约定可以使您的生活更轻松,因为大多数IDE在组织用户i时都使用它。内含或预解析包含的文件,也比我们在这里做的更容易“与世界对话”。
|
|
|
|
|
|
弄清楚我在做什么。我试图在这个包含文件中运行汇编代码(见附录A)。XC8编译器允许我插入汇编代码,但是如何将.INC文件包含在源代码中呢?其次,我想使用已经添加到include文件中的定义,我想我必须为这些相同的定义编写单独的头文件?
|
|
|
|
|
|
啊,现在我们有了你真正的问题,那就是如何在源代码中使用汇编程序例程。关于包含的头r文件,他们被当作完全相同的文本,就像在include语句的位置插入到C文件中一样。引用包含包含汇编器指令的宏,这些汇编器指令包含在使用宏的汇编器源中。你不能把它们混入一个C程序中,照原样使用它们。我认为你把头文件看成是你调用的某种“库”。这根本不是真的。
|
|
|
|
|
|
我试着包括.Inc文件,但是MPLABX说它找不到。它位于与我的项目相同的目录中。
|
|
|
|
|
|
显然,这是本主题在http://www..hip.com/for./m905141.aspx上的延续,您必须用C复制这些例程,或者使用内联汇编器制作等效程序,或者找到已经在C中的另一个应用程序注释。
|
|
|
|
|
|
你是怎么把它包括进去的?你用了什么语法?我怀疑您在应该使用引号时使用了“<>”界限,但这是个难点,因为您不能直接在C中使用汇编代码,正如我已经说过的。
|
|
|
|
|
|
是的,我可以再启动一个这样的线程吗?我想我应该,因为我转向另一个话题。
|
|
|
|
|
|
我本想建议你不要这样做,因为你仍然在努力寻找实现你最初目标的方法,这仍然很重要。帮助你了解问题的全部背景更容易。
|
|
|
|
|
|
我用的是:包括“1WY16F6X.Inc”。
|
|
|
|
|
|
您的ASM例程必须遵循调用ASM例程的编译器规则。不是反过来。手册讲述了如何嵌入ASM代码以及如何调用ASM子程序。
|
|
|
|
|
|
对于一个例程,我有一个内联程序集代码:void convertTemp(){asm("movlw SKIP_ROM");//加载消息0xCC以跳过发送唯一标识符asm("call DSTXBYTE");//发送消息asm("movlw CONVERT");//加载消息0x44以执行ADC温度转换ASM(“调用dSTxByter”);/ /发送消息}
|
|
|
|
|
|
为什么我应该使用内联汇编程序来实现等价物?从内嵌汇编代码调用这些例程有什么不同?
|
|
|
|
|
|
您调用的例程也必须是内联汇编程序。您似乎忘了这是您正在使用的C编译器,在没有C包装器的情况下,您不能直接向它抛出汇编代码。如果我这么做,我不会在汇编程序中执行任何高级例程,而只是调用例程。D,这是关键时刻。您几乎不需要代码的汇编程序来调用带有要发送的字节的例程。
|
|
|
|
|
|
好,这开始有意义了。现在,当我使用xc8编译器放置内联代码时,除了asm("..."),还有其他方法或语法可以工作吗?
|
|
|
|
|
|
如果使用封装在“C”函数中的内联程序集,则“C”编译器将自己管理代码生成。如果要使用外部ASM模块,则需要创建“C”头文件,其中包含程序集例程和变量的外部声明。de必须是可重定位的代码,并且尊重“C”编译器的程序和RAM段。另一件事是内联的“ASM”可以访问“C”变量。如果它是一个独立的“ASM”模块,您还需要创建一个包含文件,其中包含ASM例程需要访问的所有“C”变量的外部声明。e'ASM'模块变成目标代码,然后使用链接器将所有的目标模块连接成一个可执行文件。但是,如果不是,您将需要创建自己的makefile来构建项目。简而言之,如果希望简化您的生活,请使用内联asm。
|
|
|
|
|
|
内联ASM如何访问C变量?我正在考虑这样做以访问变量:无符号char var@0x00;//如果我理解这个语法,则会旋转var}{var=1;asm("RRCF 0x00");//
|
|
|
|
|
|
也许现在是阅读XC8用户指南的“5.12混合C和汇编代码”的好时机。
|
|
|
|
|
|
空隙主(空){var=1;πAsMangStokes(厄var)RLF(αvar)RLF(αvar+1)α-EnthASM}
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
508 浏览 0 评论
5813 浏览 9 评论
2351 浏览 8 评论
2238 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3545 浏览 3 评论
1161浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1122浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
890浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
508浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-14 20:54 , Processed in 1.201068 second(s), Total 108, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
557