請教各位:
像以下的程式架構:
#include xxx.h
..............
static int data[1000];
void get_data()
{
for (i=0; i<1000;i++)
data[i] = some_process();
}
void save_data(int status)
{
save(data);
}
int interrupt_will_do()
{
get_data();
save_data(Now_Status);
}
data[1000]這個 matrix 會一直在get_data()更新然後做save_data()等處理
這樣的話, (1)到底data[]像以上的方式宣告在driver的一開始較好(因為這樣
只需要宣告一次), 還是
(2)每次進入get_data()再宣告,然後將data[]的pointer傳給save_data()較好??
或是(3) 在driver code一開始用 struct 的方式宣告, 然後在 get_data()
及 save_data 以 some_struct.data[] 來處理較好????
謝謝各位的指導..
作者: yvb 2013-02-07 01:42:00
(2) 如果 data 不是 static, 那就要注意是否會發生C_and_CPP 置底十三誡之第5誡或第6誡之狀況.如果是 static, 感覺沒太大差別, 只是 variable scope 問題.若要考慮未來可能多個instances,那(3)或許是較佳選項,但可能會是 some_struct_pointer->data[] ?