是gcc';s-W序列点警告标志是否已损坏?

是gcc';s-W序列点警告标志是否已损坏?,c,gcc,warnings,sequence-points,C,Gcc,Warnings,Sequence Points,这句话给我一个警告: e = strtol(++s, (char **)&s, 10); 将++s移动到单独的语句会使警告消失,但据我所知,此警告完全不正确。在计算++s时,s的值只使用一次。s的第二个用途只是获取它的地址。有什么我遗漏的吗?较新版本的gcc(4.4.3或4.4.5)不会为您发布的行生成任何警告。在较旧的gcc版本中生成的警告似乎存在错误。我无法使用gcc 4.4.3或4.4.5重现该问题。发布一个完整的示例.c来演示它?啊,看起来它是该系统上较旧的3.x gcc。顺便

这句话给我一个警告:

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

++s
移动到单独的语句会使警告消失,但据我所知,此警告完全不正确。在计算
++s
时,
s
的值只使用一次。
s
的第二个用途只是获取它的地址。有什么我遗漏的吗?

较新版本的gcc(4.4.3或4.4.5)不会为您发布的行生成任何警告。在较旧的gcc版本中生成的警告似乎存在错误。

我无法使用gcc 4.4.3或4.4.5重现该问题。发布一个完整的示例.c来演示它?啊,看起来它是该系统上较旧的3.x gcc。顺便说一下,将其作为一个答案发布,我会接受它,因为“当前gcc不生成此警告”是我关于警告是否错误的问题的一个很好的答案。请参阅-在4.4.0中修复。