Статическое приведение, чтобы избежать предупреждений IDE? [закрыто]

Я использую Clion и часто получаю Parameter type mismatch предупреждения. Например, в следующем:

std::default_random_engine random_engine(time(0));

Я получаю Parameter type mismatch: Using 'unsigned long' for signed values of type 'time_t'

Единственный известный мне способ избежать этого предупреждения - использовать статическое приведение типа:

std::default_random_engine random_engine(static_cast<unsigned long>(time(0)))

Это приведение может быть сделано автоматически. Моя программа не обязательна для компиляции.

Однако существуют ли какие-либо затраты на производительность (или другие причины, по которым) я должен избегать использования статических приведений, когда параметр может автоматически преобразовываться?

c++
4 голоса | спросил Startec 4 Mayam18 2018, 06:28:13

1 ответ


0
Вот общая цепочка принципов, которая должна содержать ответ :-)Любая сборка должна быть полностью без предупреждения.( ---- +: = 0 =: + ---- или что у вас есть)Вы должны включить как можно больше предупреждений.Вы должны избегать C-стиле бросает, потому что они вернутся , чтобы укусить вас.A ---- +: = 1 =: + ---- никогда не влечет за собой больших затрат производительности, чем неявное приведение.(Который часто ---- +: = 2 =: + ---- .)По возможности используйте точный тип.(например, используйте постфиксы литералов целочисленных или с плавающей точкой)Если вы не можете сопоставить точный тип, потому что две функции (или ...) ожидают разные, но совместимые типы, и если неявное преобразование вызывает обмен, используйте ---- +: = 3 =: + ----(!) Если неявное преобразование вызывает предупреждение, это наиболее вероятно, потому что преобразование с потерями или иным образом проблематично в некоторых крайних случаях.Подумайте о написании подкладных функций (возможно, с дополнительной проверкой времени выполнения) для этих бросков с потерями.
ответил Martin Ba 4 Mayam18 2018, 09:39:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132