【问题标题】:How to have more than one source file with C18 in MPLAB?如何在 MPLAB 中拥有多个 C18 源文件?
【发布时间】:2012-11-30 17:51:23
【问题描述】:

在许多语言中,例如 C++,有很多不同的源文件是正常的,但 PIC 单片机程序似乎并不经常出现这种情况——至少在我的任何教程或书籍中都没有读过。

我想知道我如何才能拥有一个包含大量例程、全局变量和定义的源 (.c) 文件以供我的 main.c 文件使用。这甚至可能吗?

感谢您的建议!

【问题讨论】:

    标签: microcontroller pic pic18 mplab c18


    【解决方案1】:

    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)。我没有测试过这段代码,只是将它作为过程的一个例子提供。

    【讨论】:

      【解决方案2】:

      通常,PIC18 的大多数代码都包含在其他文件中。因此,与先编译然后链接的高级技术相比,包含(并从包含中包含)所有代码更为常见,以便有一个流向编译器。我认为你可以在 PIC18 下做到这一点,但我从来没有花足够的时间让它工作。大多数库等都设计为包含文件,而不是单独翻译的单元。

      这是一种不同的心态,但这是有原因的。我认为这是由于历史上需要尽可能小。因此,基于芯片的宏要多得多,而(可链接的)库开发要少得多。

      PIC32 编译器的库支持要好得多。

      【讨论】:

      • 您好,感谢您的回答,但我对您所说的有些困惑。您是说通常不使用多个源文件并且所有内容都放在一个源文件中吗?您多次说“包含文件”,但我不确定这是否与源文件不同,或者您的意思是包含源文件..
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多