C18: Неиспользуемые библиотечные функции занимают место в EPROM? - PullRequest
3 голосов
/ 19 февраля 2012

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);
    // ...
}

У меня есть библиотечный файл, в котором есть много определений функций. Увеличится ли размер сгенерированного машинного кода из-за неиспользуемых библиотечных функций? Или компилятор оптимизирует код, игнорируя эти неиспользуемые функции?

IDE: MPLAB 8,43
Компилятор: MCC18 3.34
ПИК: 18F2550

Ответы [ 2 ]

2 голосов
/ 19 февраля 2012
  1. Проверьте. Используйте дизассемблер или какой-либо другой инструмент, чтобы посмотреть на выходной двоичный файл и выяснить.
  2. Узнайте, есть ли у вашего компоновщика возможность зачистки.
0 голосов
/ 05 сентября 2017

Для члена C18 в lib это .o - поэтому, если для вашей ссылки требуется одна функция от члена, целое (все функции из) .o включается в окончательный двоичный / шестнадцатеричный код.

...