Missing APIs (continued)

Each #ifdef is a separate code path
Exponential complexity for each level of nesting
Difficult to get test coverage of all paths (even compilation coverage can be hard)
Complex code == more bugs == more security bugs

Better to replace the function in a separate file
Keeps main code clean of replacement junk
(you can see the point of the code, not portability goop)
Placing code in a library makes it available throughout a package (it will probably be needed more than once)
Can be independantly unit tested

