c程序功能混乱

时间:2014-03-06 17:08:26

标签: c mplab

我是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*/

4 个答案:

答案 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。

因此该程序似乎适用于嵌入式系统。