我想按值将变量传递给函数(我只使用了指针,以避免给参数指定类型),以便它可以被包含在其中的另一个函数使用。内部函数可以被赋予任何类型的变量。
我已经尝试过使用通用指针(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 *)。
答案 0 :(得分:3)
答案是,尽管不愿意,您仍必须进行投射。您正在尝试取消引用指向某个内存位置的指针,但是您并未给编译器任何类似的信息,即void *
时该信息的大小,因此它无法将其转换为正确的汇编指令以访问该内存。