2014-03-06 125 views
1

我很新的c編程,我有這個程序去除。問題是,我不知道這些代碼行甚至意味着什麼。任何人都可以從語法/功能的角度來指向我們所指的方向嗎? 代碼是做什麼的?該代碼使用MPLab C30 v3.23或更高版本進行編譯。c程序功能混亂

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

這不是標準的C,你應該指出你正在使用的編譯器並相應地更新標籤。 – hivert

+0

代碼使用MPLab C30 v3.23或更高版本編譯 – Stumpyhuck29

回答

0

它看起來像「分數」是一個自定義類型,在某處尋找它的typedef,它應該讓你開始看你在看什麼。我期望這些是變量聲明。

宏是使用「#define」預處理指令建立的,因此您可以在某處查找「#define space(x)code」來告訴您它的功能。祝你好運。

+0

不,它們不是變量初始化。請參閱http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Attribute-Syntax.html – hivert

+0

我立即糾正。我認爲「__attribute__」看起來很熟悉。 – Irisshpunk

+0

因此,請刪除您的帖子或修復它以避免downvote。 – hivert

2

這些行聲明變量;沒有與您粘貼的內容相關的執行代碼。

此代碼旨在用於瞭解fractional是一種類型的環境;無論是在同一個文件中,還是在這個文件包含的頭文件中(直接或間接),fractional將被定義爲typedef聲明。在你的例子中,每個變量都是三個fractional類型的數組。

__attribute__ ((space(?memory)))條目是編譯器打算構建的屬性,它理解和影響變量的管理方式。您需要查閱您使用的平臺的編譯器文檔。

1

this page學習在GCC(不過,我沒有看到有一個space(xmemory)選項,請諮詢您的編譯器的文檔,如果它不是GCC,如果是的話,space()可以是宏)約__attribute__fractional也是一種自定義類型,搜索typedef定義爲小數。

基本上,代碼創建了一堆fractional類型的數組。前兩個使用gcc的屬性擴展(或者你正在使用的任何編譯器),最後一個在每個位置被初始化爲0。

+0

運氣不好這不是GCC – hivert

+0

@hivert是的,在寫我的答案時有這種感覺。你知道這是什麼嗎? –

+0

它看起來像是一些嵌入式系統ide。但我什麼都不知道。 – hivert

0

前兩行聲明每個包含三個元素的數組。該類型是fractional,這可能是一個typedef(與分子和分母結構?)。 評論意見表明數據存儲在另一個內存空間,也許某種類型的Flash。

所以該程序似乎是爲嵌入式系統。