Компилятор 5.11
1.
В файле var.h
Код
typedef union
{
unsigned char f4_b;
struct
{
unsigned char start1:1; //0 - клавиша отжата, 1 - нажата
unsigned char stop1:1;
unsigned char block1:1;
unsigned char start2:1;
unsigned char stop2:1;
unsigned char block2:1;
unsigned char start3:1;
unsigned char stop3:1;
};
}flag4;
extern flag4 f4;
В файле var.c
Код
flag4 f4;
При обращении к флагам f4.start1 = 1 компилятор пишет Error[Pe134]: expected a field name
Если убрать 1 в конце названия флага в описании типа (start:1) и обращаться в программе f4.start = 1 то всё нормально. Ещё оказалось если так же в названии типа написать start_1 и в программе обращаться f4.start_1 = 1 то тоже всё замечательно. Чем же компилятору не понравилось название start1? Переменные с цифрами в конце не создают проблем.
2.
После компиляции проекта компилятор выдал: 736 bytes of DATA memory (+ 22 absolute )
При этом все переменные у меня просто не занимают столько памяти! Полез копаться в листингах, там я не шибко силён. Нашёл в файле map следующее:
Код
****************************************
* *
* MODULE SUMMARY *
* *
****************************************
Module CODE DATA XDATA
------ ---- ---- -----
(Rel) (Rel) (Abs) (Rel) (Abs)
?C_STARTUP 36
?EEPROM_16 26
?EPILOGUE_B_L09 18
?FILLER_BYTES 8
+ common 220
?PROLOGUE_L09 10
?RESET
+ common 4
?__exit 6
?low_level_init 4
?segment_init 128
?xV_SWITCH_L06 192
lcd 836
+ shared 1
main 617 6 9
+ shared 7 3
tcnt1 144 11 4
+ common 72
uart 382 6 6
+ common 220
var 137 135
N/A (command line) 576
N/A (alignment)
---------- ----- --- -- --- -
Total: 2 414 736 22 135 1
+ common 220
Что это за строка - N/A (command line) 576? Откуда эти 576 байт данных могли взяться?
Сообщение отредактировал SZ0 - Mar 14 2009, 19:48