2

我已经在我的 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

4

3 回答 3

5

在 C 中(不确定 C++)

void myFunc(int* &input);  

不是有效的声明。在 C 中,所有调用都是按值调用的。与 C++ 不同,没有引用调用。

于 2013-10-07T17:33:23.807 回答
2

您使用的声明在 C++ 中有效,但在 C 中无效,因为在 C 中没有引用。您应该使用g++或其他 C++ 编译器来编译代码。

void myFunc(int* &input);

顺便说一句,这通过引用传递指针而不是指向引用的指针。也就是说,引用是指向指针,而不是相反。

于 2013-10-07T17:33:25.367 回答
2

.c使用扩展名保存此代码并编译。你会得到同样的错误。因为C不允许在函数参数列表中使用引用,而声明和定义就像C++一样。

于 2013-10-07T17:37:02.513 回答