Здравствуйте. Я программирую на языке C для микроконтроллеров AVR при помощи компилятора gcc. Нашел такую интересную особенность. В приведенном ниже коде программа занимает место порядка 200 байт. Если раскомментировать закомментированную строку с объявлением функции delay_ms, программа резко полнеет до 350 байт. Никак не могу разобраться, почему. Не могли бы вы мне помочь. Упорное чтение Кернигана и Ричи не помогает. Куда гуглить просто не знаю. Заранее спасибо за ответ.
Код
#define WDR asm("wdr")
//void delay_ms(int time);
void main(void)
{
delay_ms(1);
delay_ms(1);
}
void delay_ms(int time)
{
volatile int Timer, Timer1;
for (Timer=0; Timer<time; Timer++)
for (Timer1=0; Timer1<51; Timer1++)
WDR;
}
Заодно сразу показываю опции, которые передаю компилятору. Сам ничего крамольного в них не обнаружил.
Код
-Wall
-gdwarf-2
-Os
-std=gnu99
-funsigned-char
-funsigned-bitfields
-fpack-struct
-fshort-enums