Можете ли вы реорганизовать код в функции таким образом (возможно, более логичным), чтобы нормальный путь происходил в конце функции, чтобы можно было использовать возврат, а исключительный путь - раньше, а НЕ какпоследнее утверждение?
РЕДАКТИРОВАТЬ: Если реорганизация функции действительно не имеет смысла, вы всегда можете просто поставить фиктивный return 0;
с комментарием.Лучше подавить предупреждение таким образом, чем глобально.
Если вы действительно хотите навсегда отключить предупреждение, вы можете использовать #pragma error_messages (off, wnoretvalue)
, но учтите, что предупреждение действительно полезно большую часть времени, поэтому я абсолютно не согласенне предлагаю отключить его.Вы можете использовать версию прагмы on
для повторного включения предупреждения после функции, но компилятор все равно выдаст предупреждение, если ваша функция когда-либо встроена.Если вы поместите функцию в ее собственный исходный файл и используете прагму, которая должна относительно безопасно скрывать предупреждение, поскольку она не может повлиять на другие единицы перевода.
Другая действительно дурацкая возможность - перейти на g ++.Если вы не компилируете для SPARC, g ++ может генерировать лучший код, чем Sun studio.