Как передать указатель неизвестного типа в функцию? - PullRequest
0 голосов
/ 19 июня 2019

Я хочу передать переменную по значению (я использовал указатели только для того, чтобы не дать параметру тип) в функцию, чтобы она могла использоваться другой функцией, содержащейся внутри.Внутренней функции может быть присвоена переменная любого типа.

Я уже пытался использовать универсальный указатель (void *), но он говорит мне, что "void *" не является указателем на тип объекта ".Я не хочу приводить указатель, потому что весь смысл использования указателя состоит в том, что он является универсальным.

void print_string(char *string, void *variable) {
  Serial.print(string);
  Serial.print(": ");
  Serial.print(*variable); # This takes a variable of any type (int, float, double, char *);
  Serial.println();
}

Я хочу иметь возможность предоставлять int, double, float или string (char *).

1 Ответ

3 голосов
/ 19 июня 2019

Ответ в том, что вы должны разыграть его, даже если не хотите. Вы пытаетесь разыменовать указатель, который указывает на какое-то место в памяти, но вы не предоставляете компилятору никакого подобия тому, каков размер этой информации, когда она равна void *, поэтому у нее нет способа перевести ее в правильную сборку. инструкция для доступа к этой памяти.

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