[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
В плане "причесывания" исходных текстов - осталась основная проблема, порождающая непереносимость, а именно - описание указателей не через "тип", а через '*'.
Сие есть очень плохой стиль.
Лябруссу писал про это еще 3 года назад - агитация не возымела действия :(
Точнее, возымела, но только частично, сравниваю:
- в 1.09 было:
typedef struct os_tcb {
void OS_FAR *OSTCBStkPtr; /* Pointer to current top of stack */
...
} OS_TCB;
- в 2.51 стало:
typedef struct os_tcb {
OS_STK *OSTCBStkPtr; /* Pointer to current top of stack */
...
} OS_TCB;
Хотя я ему предлагал для лучшей портируемости не только ввести тип данных стека (он его обозвал OS_STK), но и ввести типы для всех указателей, например:
typedef OS_STK * PTROS_STK;
typedef struct os_tcb {
PTROS_STK OSTCBStkPtr; /* Pointer to current top of stack */
...
} OS_TCB;
Дабы можно было подправив только соответсвующие определения в *.h
файле получить действительно нормальный портинг на соответствующую
платформу и соответсвующий компилятор.
В результате - в плане межплатформенной переносимости кардинальных
улучшений в 2.51 нет, один хрен руками придется все тексты чистить.
Иначе, например, под Keil C51 все указатели - generic со всеми вытекающими отсюда последствиями (на фига это нам нужно, ежели априорно известно, что стек в "xdata" )?
E-mail: info@telesys.ru