> Thus users of my binding need a different pragma > on windows to other platforms. > How can this be done without changing the code, > or having two versions of it? > If only I could rename conventions. > In C, this is accomplished with cpp using #defines > in a machine dependent header file. GNAT 3.10 and later includes a pre-processor for Ada that is similar in usage to C's but slightly better. The source is portable and free, in keeping with the GNAT/FSF philosophy. Or you could put only the parts that are not portable in one package, with a portable spec and two versions of the body. (Note: all uses of "portable" above this line do NOT use the definition below.) > Is there a good reason for windows libraries to not use > C convention? > Or is it just an accident of Microsoft history? _Software_Jargon_, Microsoft Press: "Portable: code that requires the user to port to the latest release of our operating system and utility libraries."