我正在使用PIC32,MPLABX和XC32,目前我必須爲每個外設做很多硬件描述。有些任務是這樣的:當使用常量結構時,「初始化器元素不是常量」
在file1.h
extern const stream_t EHAL_PIN_STREAM_TEMPLATE;
在file1.c中
const stream_t EHAL_PIN_STREAM_TEMPLATE = {
.field1 = constant, .field2 = constant, ...
}
在file2.h
#include "file1.h"
const stream_ehal_pin_t EHAL_STREAM_PIN_RF1 = {
.stream = EHAL_PIN_STREAM_TEMPLATE,
.pin = &EHAL_PIN_RF1
};
基本上,我在我們的流和PIC32.RF1數字引腳之間製作一個映射,並且我想使用常量全局變量進行設置,但是我得到initializer element is not constant
錯誤,當我嘗試使用EHAL_PIN_STREAM_TEMPLATE
。
您是否知道除了在運行時進行EHAL_STREAM_PIN_RF1
初始化之外的任何解決方案?
編輯
因爲我沒有想使運行時初始化我的解決辦法是讓每每EHAL_PIN_STREAM_TEMPLATE
場一個宏,並使用這些宏來填補EHAL_STREAM_PIN_RF1
結構:
#include "file1.h"
const stream_ehal_pin_t EHAL_STREAM_PIN_RF1 = {
.stream = {FIELD1_TEMPLATE_VALUE, FIELD2_TEM...},
.pin = &EHAL_PIN_RF1
};