求助:expected identifier or ‘(’ before ‘&’ token 函数返回引用怎么解决?

lionmanong 2012-04-14 08:43:42
如下代码,在return t; 下面一空行报错:expected identifier or ‘(’ before ‘&’ token,怎么查都看不出哪里有格式问题:
#include <stdio.h>
#include <stdlib.h>

int &func(int& t)
{
return t;
//This line: expected identifier or ‘(’ before ‘&’ token
}


int main(int argc, char * argv[]) {

int a=0;
int b=func(a);
printf("&a=0X%08X,&b=%08X\n",&a,&b);

return 0;
}

把函数换成如下也是同样的错误:
int &func(int* t)
{
return *t;
//This line: expected identifier or ‘(’ before ‘&’ token
}

我用的是WinGW+eclipse+gcc,在eclipse里编译如上代码,或者命令行里用gcc编译都是报一样的错:
expected identifier or ‘(’ before ‘&’ token

请大家帮忙看下这个错在哪里,怎么解决?谢谢^-^
...全文
3858 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
donghonghui 2014-11-25
  • 打赏
  • 举报
回复
thx~ 我用fluent在unix下编译出错。。 把全部//改为/**/就好了。。
lionmanong 2012-04-15
  • 打赏
  • 举报
回复
以为很简单的问题,要弄懂真不容易....
lionmanong 2012-04-15
  • 打赏
  • 举报
回复
LS两种方法试过了都可以的。

奇怪的是,eclipse重启之后再编译一次原来的代码,居然也过了.....
是不是LS之前提到过的缓冲的问题?
那估计得在main函数里面加fflush(stdout);这样吗?
evencoming 2012-04-15
  • 打赏
  • 举报
回复
换成下面两种写法之一看看?

#include <stdio.h>
#include <stdlib.h>

int func(int& t)
{
return t;
}


int main(int argc, char * argv[]) {

int a=0;
int b=func(a);
printf("&a=0X%08X,&b=%08X\n",&a,&b);

return 0;
}


#include <stdio.h>
#include <stdlib.h>

int &func(int* t)
{
return *t;
}


int main(int argc, char * argv[]) {

int a=0;
int b=func(&a);
printf("&a=0X%08X,&b=%08X\n",&a,&b);

return 0;
}
lionmanong 2012-04-14
  • 打赏
  • 举报
回复
JDK: 1.6.0_25
Eclipse: 3.6.2
CDT: cdt-master-7.0.2
MinGW: 4.6.2

int & func(int & t) 这一行错误:initializing argument 1 of 'int& func(int*)' [-fpermissive]

int b= func(a); 这一行错误:invalid conversion from 'int' to 'int*' [-fpermissive]
evencoming 2012-04-14
  • 打赏
  • 举报
回复
c没引用.
如果还是错我就不知道为什么了..lz是什么编译环境?
kakaximodo 2012-04-14
  • 打赏
  • 举报
回复
是编译器的问题吗?帮顶,也期待答案
lionmanong 2012-04-14
  • 打赏
  • 举报
回复
改了文件后缀也是一样的报错。而且报错更多了....
原来这个c语言应该也是对的吧.....
evencoming 2012-04-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

用g++? 难道是编译器的问题吗?....
[/Quote]
.c后缀默认以c语言的方式编译.
.cpp是c++.所以你悲剧了.
该文件名吧
lionmanong 2012-04-14
  • 打赏
  • 举报
回复
用g++? 难道是编译器的问题吗?....
evencoming 2012-04-14
  • 打赏
  • 举报
回复
对了.
ls的意思是说,让你把文件名后缀由.c改为.cpp
taodm 2012-04-14
  • 打赏
  • 举报
回复
楼主应该用g++来编译吧。
evencoming 2012-04-14
  • 打赏
  • 举报
回复
vc2008无压力路过.

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧