jejeje
Tu piensa que si existiesen funciones estándar para hacer todo, el código sería siempre perfectamente portable y quizás no harían falta librerías como la tuya...
... pero la realidad siempre es más cruda, cada sistema operativo tiene sus propias llamadas al sistema, lo que hace que las APIs sean diferentes y esto a su vez conlleva la amargura de saber que es complicado hacer aplicaciones completas que sean portables... salvo que uses librerías portables, como Qt... o la tuya si llegara el caso.
Al final estas librerías tienen por debajo una programación específica para cada arquitectura y separan los elementos específicos con directivas del precompilador ( que es lo que tu has descubierto hoy ).
El problema de usar directivas de precompilador es que dichas directivas se ejecutan antes de que el código pase al compilador, por lo que el compilador va a crear una solución específica para la arquitectura sobre la que esté corriendo... esto quiere decir en cristiano que el código resultante de una compilación no es portable.
Para que el código sea realmente portable tienes que distribuir los fuentes y es responsabilidad de cada usuario el compilar tu librería en su sistema para obtener un código que funcione correctamente en su máquina.
No se si me he explicado con claridad. Si tienes dudas pregunta.