我正在寫一個非常有限的資源嵌入式處理器。我有一個捕獲時間序列事件的結構,我想對不同類型的不同值使用相同的圖形函數。喜歡的東西(非常精簡,不出汗初始化值等):在函數中使用不同結構成員的最有效方法?
#define GRAPH_ONE 1
#define GRAPH_TWO 2
struct _event_t {
unsigned long timestamp;
int sensorOne;
float sensorTwo;
}
typedef struct _event_t event_t;
event_t[10] MyEvents;
void GraphSensor(byte graphType) {
for (unsigned int i = 0; i < 9; i++) {
// Get minimum value from series
if (MyEvents[i].?????) ...
}
}
我怎麼能有我的功能在結構中的不同成員操作?我可以看到大量的switch (graphType)
陳述,但這很醜陋。可能很容易有8或10個結構成員。我可以將所有這些移動到一個單獨的函數中,並讓每一個數據訪問都調用該函數,總是返回一個浮點數(對於我的圖,這應該是可以的)。最後,我可以轉換爲C++類,這可以打開其他方法。
這些都不對。有沒有更好的方法,最好是非常輕量級的方法?
在C.的上下文中解釋'accessor()'函數在哪裏定義? (C++?) – ryyker
@ryyker:他沒有定義它,但它的一個明確的例子是前兩個函數。 – wallyk
在我上面的示例中,'getSensor1'和'getSensor2'是訪問函數(有時稱爲「getters」),因爲它們用於訪問數據而不會完全揭示如何實現。好處是它們提供了一個接口,後面的數據結構('event_t')可以自由更改。 –