【发布时间】:2013-05-29 10:24:22
【问题描述】:
第一次发帖
我目前正在为嵌入式设备移植一些代码。基本上从过时的现有专有编译器中让所有东西都可以使用新编译器(AVR-GCC)
我在结构中遇到了这个看起来很奇怪的变量(无论如何对我来说!)。我无法弄清楚括号是什么。它位于用于原始值的结构中:
float (*tc)( float value );
我的 IDE 突出显示“value”作为编译器关键字,就像“float”一样,所以我不知道这是否是 AVR-GCC 特定的?
然后在一个函数中使用它,该函数有一个名为“reading”的浮点参数,并尝试返回以下内容:
return (raw[rCN3].tc)( reading );
上面这行实际上导致程序尝试访问越界内存。
我以前从未见过这样的代码,所以想知道是否有人可以帮助我破译它?它适用于旧编译器,但导致 AVR-GCC 出现问题
提前致谢。亚历克斯
【问题讨论】:
-
这是一个函数指针。见stackoverflow.com/questions/840501/…
-
“我的 IDE 将 'value' 突出显示为编译器关键字”
-
顺便说一句:语句中有多余的括号,
return raw[rCN3].tc( reading );就足够了。 -
感谢您的快速响应!我真的应该发现它是一个函数指针。也感谢您的链接
标签: c struct floating-point