我是c编程的新手,我有以下程序去debub。问题是,我不知道这些代码行甚至意味着什么。从语法的角度/功能来看,有人能指出我们的意思吗? 代码的作用是什么? 代码是使用MPLab C30 v3.23或更高版本编译的。
fractional abcCoefficient[3] __attribute__ ((space(xmemory))); /*ABC Coefficients loaded from X memory*/
fractional controlHistory[3] __attribute__ ((space(ymemory))); /*Control History loaded from Y memory*/
fractional kCoeffs[] = {0,0,0}; /*Kp,Ki,and Kd gains array initialized to zero*/
答案 0 :(得分:2)
这些行声明变量;没有与您粘贴的内容相关联的执行代码。
此代码的环境理解fractional
是一种类型;无论是在同一文件中还是在此文件包含的标头中(直接或间接),fractional
都将使用typedef
语句定义。在您的示例中,每个变量都是三个fractional
类型的数组。
__attribute__ ((space(?memory)))
条目是编译器用于构建此属性的属性,并且会影响有关如何管理变量的内容。您将需要查阅您正在使用的平台的编译器文档。
答案 1 :(得分:1)
请参阅this page了解gcc中的__attribute__
(但是,我没有看到space(xmemory)
选项,如果不是gcc,请查阅编译器的文档。如果是,然后space()
可以是一个宏)。
fractional
也是一种自定义类型,搜索小数的typedef
定义。
基本上,代码创建了一堆类型为fractional
的数组。前两个使用gcc的属性扩展(或者你正在使用的任何编译器),最后一个在每个位置初始化为0.
答案 2 :(得分:0)
看起来“小数”是一种自定义类型,在某处查找其typedef,它应该让你开始看你正在看的东西。我希望这些是变量声明。
使用“#define”预处理程序指令建立宏,因此您可以在某处查找“#define space(x)code”来告诉您它的作用。祝你好运。
答案 3 :(得分:0)
前两行声明了每个都有三个元素的数组。类型是fractional
,它可能是一个typedef(带有分子和分母的结构?)。
评论表明数据存储在另一个存储空间中,可能是某种Flash。
因此该程序似乎适用于嵌入式系统。