c언어 comparison is always true due to limited range of data type [-Wtype-limits] 에러 해결
2022. 2. 7. 17:13ㆍ전공공부/마이크로프로세서 윈터캠프
comparison is always true due to limited range of data type [-Wtype-limits]
코드를 짜서 실행하던 중 warning이 나오고 실행했을 때 for문이 무한 루프로 돌았다.
for(uint16_t i=0; i< sizeof(rawData2); i+=2){
value = (uint16_t)(rawData2[i] | rawData2[i+1] <<8);
R_DAC_Write(&g_dac0_ctrl, value);
R_BSP_SoftwareDelay(45, BSP_DELAY_UNITS_MICROSECONDS); // same as sample rate
}
이유를 찾아보려 구글에 쳐보니
unsigned char, signed char, int 같은 자료형의 문제들이 많았다.
그래서 extern unsigned char rawdata2[141282]를 살펴보았다.
141282 = 0x000227E2로 100010011111100010 17비트로 16비트를 넘었다. 즉, for문의 uint16_t i가 계속 sizeof(rawdata2)에 도달하지 하지 못하는 것이다.
그래서 uint32_t로 번경되었을 때, 무한루프가 돌지도 않고, 디버깅이 잘 되었다.
따라서 만약 문제가 생긴다면 자료형이 올바르게 설정되었나 확인하실길 바랍니다.
'전공공부 > 마이크로프로세서 윈터캠프' 카테고리의 다른 글
윈터캠프 - 왕관현상프로젝트 (0) | 2022.02.20 |
---|---|
RENESAS - 실습2 (0) | 2022.02.08 |
RENESAS - DAC, audio conversion (0) | 2022.02.02 |
RENESAS - 실습1 (0) | 2022.02.02 |
RENESAS - AGT timer 설정 (0) | 2022.01.28 |