2012-02-19 5 views
3

Library.hC18: Не используются ли неиспользуемые библиотечные функции в EPROM?

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,3 PIC: 18F2550

+3

Большинство линкеров могут пропускать весь объектный файл, а не отдельные функции. Самый простой способ узнать это просто попробовать. –

+0

Неиспользованные функции не добавляются к исполняемому файлу, если компоновщик не является мусором. При этом некоторые линкеры являются мусором. – Lundin

ответ

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^