Норот, с чорным поясом по Ц, требуеца помощь зала. Чуть правлю старый прожэкт на ПИК32 а Гармони. Ну то х с ним. Скока-то лет назад, тот-жэ компилер, спрятанный в папочку, генерил без проблем. Щас начались какие-то траблы. Линкер ругается на такое:
определение типа в *.h:
typedef union
{
uint8_t data;
struct
{
unsigned int autoload:1; //"0"enable,"1"disable
unsigned int :3;
unsigned int wordsInBatch:3; //"num of words in batch"+1
unsigned int :1;
}bits;
}SPI32directPort;
объявление константы в другом *.h:
const SPI32directPort ADFmanualSingleWordLoad={.bits.autoload=1,.bits.wordsInBatch=2};
пользую в программе:
SPI32datareg[SPI32commandStatus]=ADFmanualSingleWordLoad.data;
но в нескольких файлах *.с.
линкер ругается так:
build/default/production/_ext/1360937237/ADCinitialize.o:(.rodata+0x0): multiple definition of `ADFmanualSingleWordLoad'; build/default/production/_ext/1360937237/main.o:(.rodata+0x0): first defined here
Так понимаю, можно раскидать объявление константы в соотвецтвующих *.с файлам *.h. Можно объявлять как static const, в соотвецтвующих местах. Но это приведёт к "тут изменил, а тут забыл". Как, кроме #define решить проблему инициализации в одном месте?