2010-11-21 4 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 18050] (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18050) - исправлено в 4.4.0. – ugoren

Смежные вопросы