вставить вызов функции в зависимости от параметров - PullRequest
0 голосов
/ 28 января 2019

Я не нашел способа вставить вызов функции в зависимости от ранее включенных переменных:

Я бы хотел, чтобы пользователь вызвал эту функцию

char *call_the_microprocessor_function_with_parameters(char *port, char *pin);
// internally it will concatenate "DDR"+"port"+"pin"

char *result = call_the_microprocessor_function_with_parameters("B", "5");
// will result in "DDRB5"

, но как я могу добавить вызов?DDRB5 к коду?

// so it results in 
DDRB5 = HIGH;

, чтобы уточнить: представьте, что мне нужно установить 5-й вывод порта B, чтобы переключить светодиод, я бы назвал:

    #include <microprocessor_library.h>
    char *result = call_the_microprocessor_function_with_parameters("B", "5");
    TheMagicFunctionJustWritesTheNameOfFunction(result) = HIGH;
    //equivalent to
    DDRBB5 = HIGH
    // this would be the call to the actual microprocessor library

Я пробовал с #определить, но это привело к множеству проблем, и если я захочу использовать указатели функций и strcmp с четырьмя портами, каждый из которых имеет 8 контактов, это приведет к 32 операторам switch

- это пример отражения (котороене возможно в чистом с)?

1 Ответ

0 голосов
/ 28 января 2019

C скомпилирован и не может изменить свой собственный код.

У вас есть три варианта:

использовать язык OO.Создавайте объекты и у вас будет этот уровень абстракции.Как вы будете помечать объекты в зависимости от языка и программирования.


Напишите программу на C, которая будет генерировать новый код C, создайте исполняемый файл.Запустите новую программу.Вы можете повторить эти шаги до бесконечности.


Выберите интерпретируемый язык, который может измениться сам -

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...