2010-11-21 8 views
4

이 줄에 대한 경고가 나타납니다.gcc의 -wsequence-point 경고 플래그가 손상 되었습니까?

e = strtol(++s, (char **)&s, 10); 

++s을 별도의 명령문으로 이동하면 경고가 사라지지만, 알 수있는 한이 경고는 완전히 잘못된 것입니다. s++s의 계산에서 한 번만 사용됩니다. s의 두 번째 용도는 그 주소를 취하는 것입니다. 내가 빠진 것이 있습니까?

+0

gcc 4.4.3 또는 4.4.5를 사용하여 문제를 재현 할 수 없습니다. 그것을 보여주는 완전한 example.c를 게시 하시겠습니까? – Kamal

+0

아, 그 시스템에서 오래된 3.x gcc 인 것 같습니다. –

+2

덧글 그런데, "현재 gcc가이 경고를 생성하지 않기 때문에"대답을 게시하고 받아 들일 것입니다. 경고가 잘못되었는지에 대한 제 질문에 대한 좋은 대답입니다. –

답변

4

최신 버전의 gcc (4.4.3 또는 4.4.5)는 게시 한 행에 대해 경고를 생성하지 않습니다. 오래된 gcc 버전에는 버그가있는 것으로 경고가 생성됩니다.

+2

[GCC bug 18050] (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18050) - 4.4.0에서 수정. – ugoren

관련 문제