我正在使用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
};