Могу я использовать inline code для функции?
Ответ:
[Вернуться в категорию "Вопросы и ответы по программированию на C для микроконтроллеров PIC."] Для многих компиляторов выражение inline при объявлении функции означает, что каждый раз при вызове этой функции будет подставляться ее код. Это уменьшает количество переходов и экономит стек , но увеличивает размер кода. Hi-Tech C не поддерживает 'inline'. Однако, если нельзя, но очень хочется, то можно. Для этого используется #define. Если текст планируемой "inline" функции не помещается в одну строку, то используйте знак '' после каждой строки. Для примера:
#define DelayUs(x) { unsigned char _dcnt; _dcnt = x; while(--_dcnt != 0) {asm ("nop"); continue; }}
Каждый раз при вызове функции DelayUs (0x55) будет вставляться непосредственно ее код:
:DelayUs (0x55); 0007C5 MOVLW 0x55 0007C6 MOVWF _dcnt 0007C7 NOP 0007C8 DECFSZ _dcnt, 0x1 0007C9 GOTO 0x7c7
Достаточно много примеров использования #define для вставки кода имеется в h-файла компилятора. [Вопросы и ответы по программированию на C для микроконтроллеров PIC.]
|