【问题标题】:Intercepting Arithmetic Operations in C program [duplicate]在C程序中拦截算术运算[重复]
【发布时间】:2018-08-21 14:26:07
【问题描述】:

当我们在 C 程序中调用算术运算符时,有没有一种方法可以调用用户定义的函数,就像在 C++ 中的运算符重载一样。使用 GNU GCC 编译器? 简单地, 我有一个函数 add(),在我的 C 程序中我有算术运算

 c = a + b;

当我编译程序时,它应该在内部为 + 运算符调用我的 add() 函数。

有没有办法让我们看到gcc编译器遇到+运算符时调用的代码是什么?

【问题讨论】:

  • 您可以使用 gcc -S 选项从 C 编译成汇编语言,这样您就可以检查它生成的代码。
  • 谢谢你的帮助:-)。

标签: c gcc intercept integer-arithmetic


【解决方案1】:

没有。

C 不能那样工作,你不能重载/覆盖基本的内置运算符。

查看代码当然是可能的,要么让 gcc 直接发出它using -S,要么通过反汇编生成的二进制文件。相关的binutils工具是objdump

当然,现在许多此类探索也可以“在线”使用godbolt.org 上出色的编译器资源管理器工具进行。

【讨论】:

  • 感谢您的链接:-)。最近我正在使用 arm-buildroot-linux-uclibceabi-gcc 编译器,在那里我能够重定向浮点运算 +、-、* 的调用。由于编译器是类似的交叉编译器,这在 gcc 本身中是不可能的吗?
猜你喜欢
  • 2013-06-27
  • 2020-03-10
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 2014-09-12
  • 2021-10-18
  • 1970-01-01
相关资源
最近更新 更多