Чтобы убрать 20 с лишним ворнингов вида warning: this statement may fall through я добавил в конце каждого перехода в следующее состояние комментарий // fall through, который gcc понимает и перестает ругаться на отсутствие break.
Теоретически можно было бы вместо комментариев проставить везде break, но это меняет исполнение кода, так как после перехода в следующее состояние мы делали бы лишнюю итерацию цикла for(;;), прежде чем перейти к следующему кейсу. С точки зрения логики исполнения это ни на что не повлияло бы, но теоретически могло бы зааффектить быстродействие. Поэтому добавление комментария – самый безопасный метод.
Еще остаются ворнинги вида:
warning: ignoring return value of 'v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)', declared with attribute warn_unused_result [-Wunused-result]
но они ни на что не влияют. В интернете некоторые предлагают хак вида (void)(set() + 1); но здесь это не сработает, так как возвращается Maybe(bool), для которого оператор + не задан, а я не силен в плюсах, чтобы сходу понять как можно было бы обойти этот ворнинг.
Чтобы убрать 20 с лишним ворнингов вида
warning: this statement may fall through
я добавил в конце каждого перехода в следующее состояние комментарий// fall through
, который gcc понимает и перестает ругаться на отсутствиеbreak
.Теоретически можно было бы вместо комментариев проставить везде
break
, но это меняет исполнение кода, так как после перехода в следующее состояние мы делали бы лишнюю итерацию циклаfor(;;)
, прежде чем перейти к следующему кейсу. С точки зрения логики исполнения это ни на что не повлияло бы, но теоретически могло бы зааффектить быстродействие. Поэтому добавление комментария – самый безопасный метод.Еще остаются ворнинги вида:
но они ни на что не влияют. В интернете некоторые предлагают хак вида (void)(set() + 1); но здесь это не сработает, так как возвращается
Maybe(bool)
, для которого оператор+
не задан, а я не силен в плюсах, чтобы сходу понять как можно было бы обойти этот ворнинг.