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