trol73 / the-rat-avr

The Rat language compiler for AVR
GNU General Public License v2.0
5 stars 0 forks source link

[ОШИБКА] Работа препроцессора для макросов в define #7

Closed Vadimatorik closed 1 year ago

Vadimatorik commented 1 year ago

Этот код не собирается:

use r16 as tr1

#define SET_STACK_POINTER() SPL = tr1 = 0x60

proc main() {
    SET_STACK_POINTER()
}
Vadimatorik commented 1 year ago

SPL = tr1 - собирается tr1 = 0x60 - нет) Это если макрос кастрировать с одной их сторон)

trol73 commented 1 year ago

Если убрать скобки, то соберется

use r16 as tr1

#define SET_STACK_POINTER() SPL = tr1 = 0x60

proc main() {
    SET_STACK_POINTER
}
Vadimatorik commented 1 year ago

Так должно собираться и с ними. В этом и суть. "типа это функция") В С рабочая тема. Хоть inline и во всем лучше.

trol73 commented 1 year ago

Да, это точно баг, согласен ) Но быстро починить пока не получилось

trol73 commented 1 year ago

Исправил. В следующем обновлении будет

trol73 commented 1 year ago

Откатил исправление - оно приводит к зависанию

Vadimatorik commented 1 year ago

Неплохо!) Ну, это даже по-своему забавно)