So toll, dass Sie compilerunabhängig sein wollen! Leider verwenden Hitech- und CCS-Compiler für die Low-End-PICs viele compilerspezifische Präprozessordeklarationen, compilerspezifische Pin-Zugriffsroutinen und im Fall von CCS-Compilerspezifischen Routinen für Zugriffskernfunktionen wie SPI, I2C, ADC usw.
Es ist nicht möglich, Ihren Code so zu schreiben, dass er nicht compilerspezifisch ist, ohne viel Präprozessor #define, #ifdef, #ifndef usw., um Zugriff auf bestimmte Teile des Angebots jedes Compilers zu erhalten. Dies würde Ihren Code unlesbar machen.
Das Beste, was Sie anstreben können, ist, IDE-unabhängig zu sein und so etwas wie Eclipse zu verwenden. Zumindest verwenden Sie dieselbe IDE. Dies führt zum Verlust von CCS-Assistenten für die Einrichtung von Kernfunktionen, bietet Ihnen jedoch mehr Flexibilität bei der Verwendung derselben IDE.
Eine andere zu berücksichtigende Sache ist, dass sowohl hitech als auch CCS (zumindest in der Vergangenheit) keinen echten c-Compiler-Linker haben und dass Sie "#include myfile.c" verwenden müssen, was ich persönlich verachte ... aber das ist eine andere Geschichte.
Ich habe den IAR-Compiler nicht kommentiert, da ich nur CCS und Hitech verwendet habe. Beide funktionierten einwandfrei, aber ich war auch nach der Migration von der Motorola-Plattform (jetzt Freescale) und der Verwendung des zu dieser Zeit fortgeschritteneren Metroworks-Compilers nie wirklich zufrieden. Der IAR-Compiler sieht gut aus, aber ich habe ihn nie benutzt.