我已经在我的 Linux 机器上测试了这个,它有 gcc,并且编译得很好。
void myFunc(int* &input);
编译没有错误。
在我的 avr 上,声明相同的函数:
void myFunc(int* &input);
导致编译错误:
expected ';', ',' or ')' before '&' token
linux上的gcc版本是4.6.3
avr (avr-gcc) 的 gcc 版本是 3.4.2
在 C 中(不确定 C++)
void myFunc(int* &input);
不是有效的声明。在 C 中,所有调用都是按值调用的。与 C++ 不同,没有引用调用。
您使用的声明在 C++ 中有效,但在 C 中无效,因为在 C 中没有引用。您应该使用g++
或其他 C++ 编译器来编译代码。
void myFunc(int* &input);
顺便说一句,这通过引用传递指针,而不是指向引用的指针。也就是说,引用是指向指针,而不是相反。
.c
使用扩展名保存此代码并编译。你会得到同样的错误。因为C不允许在函数参数列表中使用引用,而声明和定义就像C++一样。