source

경고: 할당은 포인터 대상 유형에서 한정자를 삭제합니다.

lovecheck 2023. 7. 31. 21:28
반응형

경고: 할당은 포인터 대상 유형에서 한정자를 삭제합니다.

저는 다음 코드를 작성했습니다.

void buildArrays(char *pLastLetter[],int length[], int size, const char str[]) {

    int i;
    int strIndex = 0;
    int letterCounter = 0;

    for (i=0; i<size; i++) {

        while ( (str[strIndex] != SEPERATOR) || (str[strIndex] != '\0') ) {
            letterCounter++;
            strIndex++;
        }
        pLastLetter[i] = &str[strIndex-1];
        length[i] = letterCounter;
        letterCounter = 0;
        strIndex++;
    }
}

그리고 나는 위의 경고를 받고 있습니다.pLastLetter[i] = &str[strIndex-1];

pLastLetter is a pointers array that points to a char in str[].

내가 왜 그것을 받고 어떻게 고치는지 아는 사람?

음, 당신이 직접 말했듯이,pLastLetter의 배열입니다.char *포인터, 동안str의 배열입니다.const char.그&str[strIndex-1]식에 유형이 있습니다.const char*할당할 수 없습니다.const char*에 가치를 두는.char *포인터그것은 항상 정확성의 규칙을 위반할 것입니다.사실, 당신이 하고 있는 것은 C의 오류입니다.컴파일러는 전통적으로 일부 오래된 레거시 코드를 손상시키지 않기 위한 단순한 "경고"로 보고합니다.

"고치는 방법"에 대해서는...그것은 당신이 무엇을 하려고 하는지에 달려 있습니다.둘 중 하나 만들기pLastLetter일련의const char*또는 제거합니다.const부터str.

stris const, pLast Letter는 그렇지 않습니다.이렇게 하면 const 한정자가 폐기된다는 것입니다.

언급URL : https://stackoverflow.com/questions/3479770/warning-assignment-discards-qualifiers-from-pointer-target-type

반응형