2010-11-21 69 views
4

我得到一個警告,這條線:gcc的 - 時序點警告標誌是否被破壞?

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

移動++s到一個單獨的語句使警告消失,但據我所知,這個警告完全不正確。 s僅用於計算++s一次。 s的第二次使用只是採取它的地址。有什麼我失蹤?

+0

我不能使用gcc 4.4.3或4.4.5來重現問題。發佈一個完整的example.c來演示它? – Kamal 2010-11-21 16:25:26

+0

啊,看起來就像那個系統上舊的3.x gcc。 – 2010-11-21 16:29:23

+2

順便說一句,作爲答案發布,我會接受它,因爲「目前的gcc不會產生這個警告」是一個很好的答案,我的問題是否是警告是不正確的。 – 2010-11-21 16:30:22

回答

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 2013-02-13 11:46:41