2011-05-03 4 views
3

g ++로 빌드되는 응용 프로그램이 있습니다. 나는 문제를 해결하기 위해 컴파일 플래그를 추가했다. 사용하지 않는 변수, 변수는 이전에 사용/부호없는 값에 서명을 비교, 참조 등C++ 참고 : 피연산자가 지정되지 않은 순서로 평가됩니다.

문제는, 내가 진술 정크 발언 라인의 수백 얻고있다 :이 발언이 정말로 무엇을 의미 하는가 remark #981: operands are evaluated in unspecified order

을 ? 그리고 어떻게하면 경고/비고를 볼 수 있을까요?

도움 주셔서 감사합니다.

+2

일부 코드 행을 게시 (복사 - 붙여 넣기와 같이) 할 수 있습니까? 코드를 보지 않고 진단이 무엇을 의미하는지 종종 알기가 어렵습니다. (Prasoon Saurav의 질문에 대한 귀하의 의견은 귀하의 라인이 귀하가 인용하는 것과 같기 때문에 유용하지 않으며, 귀하와 비슷하게 보이는 두 문장은 컴파일러에 의해 다르게 처리 될 수 있습니다.) –

+0

모든 문장은 예제 I과 관련됩니다 항상 서명 된 int 또는 서명 된 반바지에 라운드 또는 복근을 사용하는 덧글에 게시하고 항상 추가합니다. 경우에 따라 결과가 저장되지 않고 값에 의해 함수로 전달되는 경우도 있습니다. 인텔 컴파일러를 사용하는 것을 기억합니다. # 981과 같이 경고 번호를 표시하지 않는 방법이 있지만 g ++에는이 코드가없는 것 같습니다. 따라서 해결 방법을 찾고 있습니다. 일반적으로 코드를 수정하는 것이 좋지만이 경우 많은 노력이 필요합니다. – steveo225

+0

이것은'g ++'경고 메시지가 아니며'icc' 경고 메시지입니다. 인텔의 사람들은 쓸모가 없다고 말합니다. http://software.intel.com/en-us/forums/showpost.php?p=72053 – Cubbi

답변

0

실제로 표준에서는 지정되지 않지만 시스템 프로그래밍에서는 일관성이 있어야합니다. 평가하기 전에 폴란드어 표기법 변환을 사용하는 일부 컴파일러는 우선 순위를 사용하지만 일부 컴파일러는 [평가 전 트리 변환을 사용] 엄격하게 오른쪽에서 왼쪽 순서로 평가합니다.

관련 문제