On Thu, Jan 08, 2004 at 10:04:26PM +0100, Chris Liechti wrote:
> uhm, if you implement functions that you dont use, isnt a library what
> you want?
>
> you can create a library and the linker will only take the functions
> that are used. see msp430-libc for hints how to build a library.
Lib's have a disadvantage, you can not change preprocessor directives.
Let me explain with a small example. I have a module and use some portpins.
The portpins are defined by
#define A 0x01
#define B 0x02
#define C 0x04
in one project. In another project I use
#define A 0x80
#define B 0x40
#define C 0x20
A, B, C are constants for the compiler and saves much code and execution time.
With libs I can do this only using variables, and the code is bigger.
Imagine you have a loop count (constant for a project), and in some projects
it is 0 - the compiler would eliminate your code to nothing (using #define).
With a lib I have to set the loop count using a variable. At compile time
the compiler does not know how often the loop is called and implement the
whole loop - also for counts of 0. Another example are switch/case, and -
I am sure - there are much more improvements possible.
Because of the limited ressources of uControllers this was always important
for me, so libs are only useful in some cases.
Matthias