Tak dobrze, że chcesz być niezależny od kompilatora! Niestety kompilatory hitech i CCS dla niższych PIC używają wielu specyficznych dla kompilatora deklaracji preprocesora, specyficznych dla kompilatora procedur dostępu do pinów, aw przypadku specyficznych dla kompilatora CCS procedur dostępu do podstawowych funkcji, takich jak SPI, I2C, ADC i tak dalej.
Nie jest możliwe napisanie kodu, który nie jest specyficzny dla kompilatora, bez dużej ilości preprocesora #define, #ifdef, #ifndef itd., Aby uzyskać dostęp do określonych części tego, co każdy kompilator ma do zaoferowania. To spowodowałoby, że Twój kod byłby nieczytelny.
Najlepszą rzeczą, na którą możesz dążyć, to być niezależnym od IDE i używać czegoś takiego jak zaćmienie, więc przynajmniej używasz tego samego IDE. Spowoduje to utratę kreatorów CCS do konfigurowania podstawowych funkcji, ale zapewni większą elastyczność w korzystaniu z tego samego IDE.
Inną rzeczą do rozważenia jest to, że zarówno hitech, jak i CCS nie mają (przynajmniej w przeszłości) prawdziwego linkera kompilatora c i wymagały użycia „#include myfile.c”, którego osobiście gardzę… ale to inna historia.
Nie komentowałem kompilatora IAR, ponieważ używałem tylko CCS i hitech. Oba działały dobrze, ale nigdy nie byłem zadowolony z migracji po migracji z platformy Motorola (teraz freescale) i użyciu kompilatora metroworks, który był wówczas bardziej zaawansowany. Kompilator IAR wygląda dobrze, ale nigdy go nie użyłem.