C18: 未使用的库函数会占用EPROM 空间吗?

发布于 2025-01-07 19:12:33 字数 468 浏览 1 评论 0原文

Library.h

void Foo1(void);        // Unused
int  Foo2(int, int);    // Used
char Foo3(char);        // Unused

ma​​in.c

// ...
#include "Library.h"
// ...
void main(void)
{
    int ret;
    // ...
    ret = Foo2(3, 7);
    // ...
}

我有一个库文件,其中有很多函数定义。生成的机器码大小是否会因为未使用的库函数而增加?或者编译器会通过忽略那些未使用的函数来优化代码吗?

集成开发环境:MPLAB 8.43
编译器:MCC18 3.34
图片:18F2550

Library.h

void Foo1(void);        // Unused
int  Foo2(int, int);    // Used
char Foo3(char);        // Unused

main.c

// ...
#include "Library.h"
// ...
void main(void)
{
    int ret;
    // ...
    ret = Foo2(3, 7);
    // ...
}

I have a library file which has a lot of function definitions in it. Will the generated machine code size increase because of the unused library functions? Or will the compiler optimize the code by ignoring those unused functions?

IDE: MPLAB 8.43
Compiler: MCC18 3.34
PIC: 18F2550

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谈场末日恋爱 2025-01-14 19:12:33
  1. 查看。使用反汇编程序或其他工具查看输出的二进制文件并找出答案。
  2. 查明您的链接器是否可以选择进行死区剥离。
  1. Check. Use a disassembler or some other tool to look at your output binary and find out.
  2. Find out if your linker has an option to do dead-stripping.
萝莉病 2025-01-14 19:12:33

对于 lib 中的 C18 成员,它是 .o - 因此,如果您的链接需要成员中的一个函数,则整个(所有函数).o 都包含在最终的 bin/hex 代码中。

For C18 member in lib is .o - so if your link requires one function from a member the whole (all functions from) .o is included in final bin/hex code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文