2014-10-20 1 views
-5

데비안 커널 3.16-2-amd64 및 KDE 4.14.1로 테스트. 크로스 컴파일하지 않습니다. cmake 사용. prefsdialogimpl.cpp : 61 : 18 : 경고 : 부호있는 정수식과 부호없는 정수식 비교 [-Wsign-compare]

오래된 KDE 응용 프로그램을 소생하려고하지만 :

[ 80%] Building CXX object CMakeFiles/knet.dir/prefsdialogimpl.o 
/usr/local/src/knet/prefsdialogimpl.cpp: In member function ‘void PrefsDialogImpl::setDeviceChoices(QVector<QString>)’: 
/usr/local/src/knet/prefsdialogimpl.cpp:61:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] 
for(uint i=0; i<choices.count(); i++) 

관련 기능은 다음과 같습니다

void PrefsDialogImpl::setDeviceChoices(QVector<QString> choices) 
{ 
    for(uint i=0; i<choices.count(); i++) 
     diagram_deviceComboBox->insertItem((choices[i]), i); 
} 

그리고 전체 파일을, prefsdialogimpl.cpp은 여기에 있습니다 : https://pastee.org/fhb3u

부호없는 정수가 어디에 있는지 알지 못하고이를 수정하는 방법을 모른다. 나는 C++을 처음 사용하지만 학습을하고 있습니다.

+1

스택 오버플로에 오신 것을 환영합니다. 당신은 질문을 게을리했습니다. 귀하가 겪고있는 문제를 알려주는 완전한 문장을 포함하도록 질문을 편집하십시오. 컴파일러 오류를 제공했습니다. 너를 고치는 것을 막는 무엇이? –

+0

경고는 명확하게 문제가있는 곳을 알려줍니다. 나는'choices.count'가 (부호가있는) 정수 값을 반환한다고 생각할 것입니다. 여러분은 이것을'uint'와 비교합니다 – UnholySheep

답변

1

the documentation for QVector::count()을 보면 count이 부호있는 정수 값을 반환한다는 것을 알 수 있습니다. 이 값을 i (uint)과 비교하면 부호 불일치가 발생합니다.

i의 정의를 int i으로 변경하여이 불일치를 해결할 수 있습니다.

+0

아주 좋습니다, Magnus 감사합니다. 나는이 같은 진술이이 주변의 세 가지 기능에서 사용되지만 아직 실패하지는 않는다는 것을 이해하지 못한다. 난 정수로 설정하고 서명 된/서명되지 않은 오류가 발생합니다. – Bill

+0

@Bill 물론 동일하지 않습니다. 이 기능과 다른 기능의 차이점은 무엇입니까? 'choices'는 다른 타입입니다. 이것이 어떻게 효과를 낼 수 있습니까? 물론'count' 함수가 다르므로. 가서 다른'count' 함수에 대한 문서를 찾아서 그 불일치의 원인을 찾으십시오. 문서를 찾는 것은 특히 당신이 배울 때 제 2의 천성이되어야하며, 나는 당신이 문서를 찾지 않았기 때문에 downvotes를 얻었을 것이라고 생각합니다. 훈련 연습으로 가져가;) :) –

관련 문제