【发布时间】:2012-11-30 17:51:23
【问题描述】:
在许多语言中,例如 C++,有很多不同的源文件是正常的,但 PIC 单片机程序似乎并不经常出现这种情况——至少在我的任何教程或书籍中都没有读过。
我想知道我如何才能拥有一个包含大量例程、全局变量和定义的源 (.c) 文件以供我的 main.c 文件使用。这甚至可能吗?
感谢您的建议!
【问题讨论】:
标签: microcontroller pic pic18 mplab c18
在许多语言中,例如 C++,有很多不同的源文件是正常的,但 PIC 单片机程序似乎并不经常出现这种情况——至少在我的任何教程或书籍中都没有读过。
我想知道我如何才能拥有一个包含大量例程、全局变量和定义的源 (.c) 文件以供我的 main.c 文件使用。这甚至可能吗?
感谢您的建议!
【问题讨论】:
标签: microcontroller pic pic18 mplab c18
PIC 开发完全可以做到这一点。从代码和数据的角度来看,大小当然是一个问题,但它仍然只是 C 代码,这意味着 C 规则的大多数(请参阅编译器文档了解例外情况)适用,包括将多个源文件编译并链接到单个输出(通常是 .十六进制文件)。例如,在与 main.c 不同的 C 文件中,例如 test.c:
int AddNumbers(int a, int b)
{
return a + b;
}
然后您可以在头文件 test.h 中定义它:
int AddNumbers(int a, int b);
在 main.c 文件的顶部包含 test.h:
#include "test.h"
然后您应该能够从 main.c 调用 AddNumbers(4,5)。我没有测试过这段代码,只是将它作为过程的一个例子提供。
【讨论】:
通常,PIC18 的大多数代码都包含在其他文件中。因此,与先编译然后链接的高级技术相比,包含(并从包含中包含)所有代码更为常见,以便有一个流向编译器。我认为你可以在 PIC18 下做到这一点,但我从来没有花足够的时间让它工作。大多数库等都设计为包含文件,而不是单独翻译的单元。
这是一种不同的心态,但这是有原因的。我认为这是由于历史上需要尽可能小。因此,基于芯片的宏要多得多,而(可链接的)库开发要少得多。
PIC32 编译器的库支持要好得多。
【讨论】: