用函数调用重写变量赋值的C宏
正在调用所有C宏专家 有没有办法编写一个C宏来替换如下内容:用函数调用重写变量赋值的C宏,c,macros,C,Macros,正在调用所有C宏专家 有没有办法编写一个C宏来替换如下内容: my_var = 5; 为此: setVar(&my_var, 5); 换句话说,我是否可以编写一个C宏来覆盖特定变量的赋值(在上面的示例中为my_var),并将其传递给一个函数,该函数的任务是设置该变量?如果可能的话,我希望能够钩住一个特定变量的赋值 编辑:再考虑一下这个问题后,我不确定是否可以做到。即使你能想出一个宏来做这件事,setVar也不一定知道变量的类型和它的设置,那么它的第二个参数的类型是什么呢 EDIT
my_var = 5;
为此:
setVar(&my_var, 5);
换句话说,我是否可以编写一个C宏来覆盖特定变量的赋值(在上面的示例中为my_var),并将其传递给一个函数,该函数的任务是设置该变量?如果可能的话,我希望能够钩住一个特定变量的赋值
编辑:再考虑一下这个问题后,我不确定是否可以做到。即使你能想出一个宏来做这件事,setVar也不一定知道变量的类型和它的设置,那么它的第二个参数的类型是什么呢
EDIT:我之所以要钩住特定变量的赋值,是为了在一些专用嵌入式C代码的基本调试器中使用。如果能够有一个“观察列表”就好了,本质上就像IDE中一样。我的第一反应是尝试用一个C宏钩住变量赋值,这样你就可以把宏放到你的代码中,让变量被“监视”,但是我以前从来没有真正编写过调试器,所以我可能完全搞错了。不是用标准预处理器。它无法更改文件的解析,只能用一段代码替换专有名称(名称中的“=”无效) 如果您有冒险精神,可以尝试用一个小脚本来替换可执行文件“cpp”,该脚本可以预处理源代码。但这可能会破坏调试信息(文件名,如果要用几行代码替换一行代码,还需要行号信息)。脚本将调用“sed”`:
但是你最好的办法可能是把它放到一个脚本中,然后在你所有的源代码上运行它。这将更改代码,您将看到调试器中发生了什么。我想问题是相反的,用函数调用替换赋值。
#define setVar(_left_, _right_) *(_left_) = _right_
#define setVar(_left_, _right_) *(_left_) = _right_