Директиви за условно компилиране
Директиви за условно компилиране
Много микроконтролери се различават само по някои параметри, коитощифтове, размер на паметта и разпределение на регистъра. Това ви позволява да създадете програмен код в C за цялата гама от модели. За това обаче е необходимо по някакъв начин да се заменят онези параметри, които се различават при различните модели. За такива цели се използват директивите на условната компилация.
Синтаксис за директива # ifdef:
# ifdef макрос_име statement_sequence_1
Ако е дефинирано име на макрос в програмата, след това първата следпоследователност от оператори, в противен случай - втората последователност (клонът # else може да отсъства).
Пример за използване (за CCS компилатор - PICC):
Синтаксис за директива # ifndef:
# ifndef макрос_име statement_sequence_1
В този случай, за разлика от директивата # ifdef, първата последователност от изрази се изпълнява if, ако името на макроса не е дефиниранЛено в програма.
За условно компилиране можете също да използвате директивите # ако , # elif .
# if израз1 statement_sequence_1
# elif expression2 statement_sequence_2
Тази конструкция работи по подобен начин на условния оператор if - else. КомпиГенераторът оценява изразите след # if и # elif, докато един от тях не даде TRUE в резултат, след което съответниятследващата последователност от оператори. Ако и двата израза дават false, тогава последователност от оператори се заменя след директивата # else (ако е налице).
Да кажем за предаване и получаване на данни чрез UART в абстрактно микроSomeMicl 6 използва щифтове 12 и 13, SomeMic 8 използва щифтове 6 и 14, а SomeMic 4 използва щифтове 1 и 2. Тогава можем да създадемдаде заглавен файл SomeMic. h и включва следните директиви.
#if SomeMicX == 16
#elif SomeMicX == 8
#elif SomeMicX == 4
#error "Пиновете TXD и RXD за SomeMicX не са дефинирани"