我試圖調用下面的函數應該充滿傳感器的數據的數組,並返回檢測傳感器數量的函數:調用與動態分配的數組的指針
uint8_t ds18b20_read_all(uint8_t pin, ds_sensor_t *result)
我怎麼來在不知道傳感器數量的情況下調用它?我想過:
ds_sensor_t *result = (ds_sensor_t *) malloc(NUM_OF_SENSORS * sizeof(ds_sensor_t));
uint8_t count = ds18b20_read_all(pin, result);
但我不知道NUM_OF_SENSORS。我應該選擇一個足夠大的數字嗎?
編輯: 函數的源代碼:https://github.com/SuperHouse/esp-open-rtos/blob/master/extras/ds18b20/ds18b20.c
閱讀功能說明。 –
我想你可以在每次讀取新傳感器數據時使用'realloc'功能。 http://en.cppreference.com/w/c/memory/realloc這意味着你可以添加你的傳感器一個接一個'結果' –
我認爲應該有一個常數,說你最多可用的傳感器數量(類似MAX_NUM_OF_SENSORS)。或者像這樣的東西...你有函數ds18b20_read_all的源代碼嗎? – Sandro