gcc를 사용하여 일부 C++ 코드를 컴파일하고 "Debug"구성을 사용할 때 코드가 잘 컴파일되는 동안 "Release"구성에서 경고가 발생합니다. 컴파일 옵션의 유일한 차이점은 다음과 같습니다일부 명령문은 "릴리스"에서는 경고를 생성하지만 GCC에서 "디버그"모드 컴파일에서는 생성하지 않는 이유는 무엇입니까?
"디버그"g++ -O0 -g3 ...
"릴리스"g++ -O3 ...
나는 "릴리스"빌드에 표시되는 메시지 :
../src/xml.cpp: In static member function ‘static Z<char>* XML::ReadToZ(const char*, XMLTransform*, XMLTransformData*)’:
../src/xml.cpp:5034: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result
../src/xml.cpp:5041: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result
관련된 두 문장은 다음과 같습니다.
/* 5034 */ fread((*y).operator char *(),1,S,fp);
/* 5041 */ fread(yy.operator char *(),1,S,fp);
경고가 왜 다른가요?
왜 중요한가요? 반환 값을 확인하십시오. – chris
@chris - 우선 문제는 b * c입니다. 저는 문제를 이해하고 문제를 이해하고 * 우회하는 데 관심이 있습니다. 두 번째로, 이것은 내 코드가 아니지만 웹에서 다운로드 한 패키지의 일부이므로 변경하기를 꺼립니다. – ysap
논리적 인 의미로 컴파일러 경고에주의를 기울이는 것이 실제로 문제를 우회하는 것은 아닙니다. 당신이 기대 한 것을 읽지 못할 경우, 당신은 알 방법이 없습니다. 다른 사람이 작성한 코드이기 때문에 컴파일 할 때 경고를하지 않고 강력하게 만들려면 노력해야합니다. – chris