Я не нашел способа вставить вызов функции в зависимости от ранее включенных переменных:
Я бы хотел, чтобы пользователь вызвал эту функцию
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
- это пример отражения (котороене возможно в чистом с)?