메모리 위치의 특정 값에 따라 값을 정의하는 데 문제가 있습니다.메모리 위치의 특정 값에 따른 값 정의
기본적으로 특정 메모리 위치에서 값을 읽고이 값에서 정의를 만들고 싶습니다. 그런 다음이 동일한 정의를 사용하여 코드를 컴파일 할 때 첫 번째 정의 값에 따라 새 값을 다시 정의하십시오. 당신의 도움에 대한
#define MY_DEFINE_VALUE (*(uint32_t *)0x0800C200)
// 8 kBytes of EEPROM
// First section base address is 0x08080000
// Second section base address is 0x08081000
#if (MY_DEFINE_VALUE < 0x0200)
#define EEPROM_BASE ((uint32_t)0x08080000)
#else
#define EEPROM_BASE ((uint32_t)0x08081000)
#endif
감사 :
은 여기 내 예입니다.
주소를 역 참조하고 있습니다. 그것은 전처리 시간에 할 수 없습니다. –
'* (uint32_t *) 0x0800C200' 표현식은 * run-time *에서 평가되어야합니다. 전처리 기는 순전히 * 컴파일 타임 * 일입니다. 둘을 섞을 수는 없습니다. –
당신이 컴파일하는 머신이 목표가 아닙니다. –