Псевдопеременные C18

Я ищу способ сделать Jalv2-подобные псевдопеременные в C с помощью компилятора C18. Псевдопеременная — это то, что действует как переменная, но на самом деле является функцией.

В Jalv2 можно создать такую ​​псевдопеременную:

function the_var'get() return byte is
    -- some code
end function

procedure the_var'set(byte in value) is
    -- some code
end procedure

Теперь можно читать и писать в the_var, а на самом деле эти функции выполняются:

the_var = 0x40         -- actually executes the_var'set(0x40)
doSomething(the_var)   -- actually executes doSomething(the_var'get)

Есть ли что-то подобное для C?


person Community    schedule 22.04.2013    source источник
comment
Похоже, вы запрашиваете геттеры и сеттеры в C. Нет, это невозможно.   -  person Dietrich Epp    schedule 22.04.2013
comment
@DietrichEpp есть обходной путь?   -  person    schedule 22.04.2013
comment
Конечно, просто вызывайте функции явно.   -  person Dietrich Epp    schedule 22.04.2013
comment
@DietrichEpp не похоже на последний пример кода?   -  person    schedule 22.04.2013
comment
Просто невозможно с C.   -  person Dietrich Epp    schedule 22.04.2013
comment
@DietrichEpp, это очень плохо, но можешь ли ты ответить на это?   -  person    schedule 22.04.2013
comment
Вы можете сделать это на C++ и использовать компилятор IAR C++ для PIC18.   -  person zakinster    schedule 22.04.2013
comment
Оператор присваивания @angelatlarge и операторы неявного преобразования перегружаются.   -  person zakinster    schedule 22.04.2013
comment
@zakinster, возможно, ты мог бы ответить на это? Это хорошая альтернатива   -  person    schedule 22.04.2013
comment
Дитрих Эпп уже упомянул об этом в своем ответе.   -  person zakinster    schedule 22.04.2013
comment
@zakinster ах да, я вижу, неважно   -  person    schedule 22.04.2013
comment
Мне нужна функция X, которой нет в C, но я хочу программировать на C. Как мне получить функцию X на C? Вы не хотите программировать на C. Используйте язык программирования который имеет функцию X.   -  person autistic    schedule 22.04.2013
comment
@modifiedlvalue Я еще не знал, есть ли в C эта функция, поэтому я спросил.   -  person    schedule 22.04.2013


Ответы (1)


Нет, это невозможно с C. Это невозможно даже с препроцессором. Оператор = всегда делает одно и то же в C, и его нельзя настроить.

Если вы хотите делать такие вещи, вам придется выбрать другой язык. Например, как C++, который позволяет переопределить operator = (для установки) и operator int (для получения).

person Dietrich Epp    schedule 22.04.2013