在写代码时,想对函数进行取值操作,就用了“&”符号进行取值操作,结果报了一个“Qt: error: lvalue required as unary ‘&’ operand”错误。
下面是代码片段:

typedef int (*ADD)(int, int);
int add(int a, int b){return a+b;}
int sub(int c, ADD pADD, int a, int b){return c-(*pADD)(a, b);}
MainWindow::MainWindow(QWidget *parent)  :  QMainWindow(parent)
{qDebug() << &add(1,2);ADD pA = (ADD)&add;void *p = (void*)&add;void *pTmp = (void*)pA;qDebug() << p << *pA << pTmp;printf("show address : 0x%x\n", add);printf("show address : 0x%x\n", &add);
}

截图如下:
编译结果如下:
错误原因是:
因为函数的返回值存储在eax寄存器中,所以不可以直接操作,需要将其mov到内存中才可以操作,所有的函数都一样,不可以直接取地址。
如果要对函数进行取值操作,通过函数名就可以进行取值
如:

void fun(){}

对于 fun 和 &fun 这样理解:
fun 是函数的首地址,它的类型是 void ();
&fun 表示一个指向函数 fun 这个对象的地址, 它的类型是 void (*)()
因此 fun 和 &fun 所代表的地址值是一样的,但类型不一样。
fun 是一个函数
&fun 表达式的值是一个指针
另外:类内普通函数地址(静态函数地址在普通函数后面)
下面是不同的取值方式:

Qt: error: lvalue required as unary ‘‘ operand错误解决相关推荐

  1. linux代码没左值,【已解决】用arm-xscale-linux-gnueabi编译代码出错:error: lvalue required as unary ‘’ operand...

    [问题] 用arm-xscale-linux-gnueabi交叉编译代码,结果出错:.././Src/xxx.c:707:32: error: lvalue required as unary '&a ...

  2. linux c之gcc编译出现error:lvalue required as unary ‘‘ operand解决办法

    1.问题 今天搞epoll实现io复用的时候gcc编译出现这个错误lvalue required as unary '&' operand,如下图 2.解决办法 accept函数参数如下 in ...

  3. 【C】报错[Error] lvalue required as left operand of assignment

    [Error] lvalue required as left operand of assignment 原因: 计算值为== != 变量为= 赋值语句的左边应该是变量,不能是表达式.而实际上,这里 ...

  4. 【Bugs系列】lvalue required as unary ‘’ operand

    Date: 2019-5-7 1.参考 https://stackoverflow.com/questions/22788026/error-lvalue-required-as-unary-oper ...

  5. c++:错误:lvalue required as left operand of assignment

    错误 thread.cpp:53:23: error: lvalue required as left operand of assignmentstatic_cast<int *>(0) ...

  6. c++报错:lvalue required as left operand of assignment

    在编程时出现报错: lvalue required as left operand of assignment 出现此错误原因,是因为,等号左边是不可被修改的表达式或常量.而表达式或常量不能作为左值. ...

  7. #define时,ERROE: lvalue required as left operand of assignment

    将int LCD_BK = 10 改为#define LCD_BK 10编译报错: ERROE: lvalue required as left operand of assignment 原因: # ...

  8. Error parsing HTTP request header Larger错误解决方法

    Error parsing HTTP request header Larger错误解决方法 参考文章: (1)Error parsing HTTP request header Larger错误解决 ...

  9. Expected required, optional, or repeated.错误解决方法

    Expected "required", "optional", or "repeated".错误解决方法 编译Protobuf 库,出现如 ...

最新文章

  1. 【TCP/IP详解 卷一:协议】第十九章 TCP的交互数据流
  2. python【力扣LeetCode算法题库】面试题 17.16- 按摩师(DP)
  3. CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar-Android M新控件
  4. 很多人问,到底要不要转管理
  5. 数据库连接数过多 too many
  6. CentOS 6.7 配置JSP运行环境之tomcat
  7. 『数据库』朴实无华且枯燥的数据库文章--关系数据理论
  8. 起点低,是彪悍的最好证明!
  9. .net core中的高效动态内存管理方案
  10. 微型计算机中 i o接口位于6,北语15秋计算机基础作业1
  11. Task类的简单介绍
  12. 两个次序统计量的联合密度函数
  13. 读《红楼梦》和《百年孤独》后关于爱、孤独和回忆的一点体会
  14. 尚德机构2020年Q4财报:净收入5.85亿元,管理费用同比大幅下降近五成
  15. 终于更新了!利用黎曼几何分析EEG脑电信号(三)
  16. 信号与系统知识点记录(P4-P5)
  17. 65 - 请解释什么是线程锁,以及如何使用线程锁
  18. HarmonyOS初探03——DevEco Studio创建应用问题ERROR Unable to tunnel through proxy. Proxy returns HTTP1.1 403
  19. IDEA 常用快捷键(详细)
  20. java nio socket

热门文章

  1. 中级软件测试笔试题100精讲_全套软件测试面试笔试题(附答案)
  2. python制作游戏教程_python制作填词游戏步骤详解
  3. Redis为什么速度这么快?
  4. python爬虫爬取高清原图
  5. OpenCV-Python图像梯度 Sobel算子
  6. ADAS驾驶辅助 常见功能
  7. 百家号自媒体如何写一篇爆文,百家号什么时间发布爆文几率大
  8. Java开发常见漏洞及解决方案
  9. L2之上的L3、L4,StarkWare的这个设想到底能否实现?
  10. 乐视1s 安装android6,乐视超级手机1s怎么装sim卡【图文教程】