如何将未知类型的指针传递给函数?

时间:2019-06-19 03:13:23

标签: c function pointers

我想按值将变量传递给函数(我只使用了指针,以避免给参数指定类型),以便它可以被包含在其中的另一个函数使用。内部函数可以被赋予任何类型的变量。

我已经尝试过使用通用指针(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 个答案:

答案 0 :(得分:3)

答案是,尽管不愿意,您仍必须进行投射。您正在尝试取消引用指向某个内存位置的指针,但是您并未给编译器任何类似的信息,即void *时该信息的大小,因此它无法将其转换为正确的汇编指令以访问该内存。