프로그래밍/C,C++

Error: Initialization discards qualifiers from pointer target type

채윤아빠 2015. 2. 25. 14:32
728x90
반응형



문제점 및 증상

  • 프로그램 개발 중에 다음 코드에서 "Initialization discards qualifiers from pointer target type" 오류 메시지를 받았다.
        char *arrReportRegName[] = {
            "ADE7953_REG8_LCYCMODE",
            "ADE7953_REG16_LINECYC",
            "ADE7953_REG16_Period",
            "ADE7953_REG24_IRQSTATA",
            "ADE7953_REG24_IRQSTATB" 
        };
    

해결 방안

  • 참고자료의 내용을 참고해 보면, 위 코드에서 문자열 배열을 초기화하여 선언하는 부분에서, 문자열 상수를 초기화하는데 이용하여는데, 변수는 일반 char * 라서 "Initialization discards qualifiers from pointer target type" 오류가 발생한 것이다.
  • 간단하게 const char *arrReportRegName[] 라고 선언하면 오류가 깔끔하게 해결된다.
        const char *arrReportRegName[] = {
            "ADE7953_REG8_LCYCMODE",
            "ADE7953_REG16_LINECYC",
            "ADE7953_REG16_Period",
            "ADE7953_REG24_IRQSTATA",
            "ADE7953_REG24_IRQSTATB" 
        };
    
  • 포인터 변수를 초기화할 때는 대상 포인터와 원본 포인터 간에 형을 일치시키는 것이 좋다. 그렇다고 강제로 형변환을 통하여 오류를 해결하려고 하면 안된다.

참고자료