Проще говоря:
Если вы включили stdlib.h
, как и должно быть, то приведение абсолютно ничего не делает и должно быть удалено. В конце концов, вы уже указали тип.
Если нет, то приведение закроет ошибку, что плохо.
Никогда не используйте это приведение в коде C.
В C ++ приведение необходимо, поскольку C ++ не допускает неявного преобразования между void *
и другими типами указателей. С другой стороны, в C ++ есть вещи лучше, чем malloc()
, например new
или контейнерные классы.
Написание кода, который будет компилироваться в обоих случаях, бессмысленно. Вы всегда должны знать, на каком языке вы пишете, и запись в подмножестве заставляет вас использовать конструкцию, которая уступает в любом языке. Компиляторы C ++, с которыми я знаком, также скомпилируют код на C, и в C ++ есть явные условия для легкой связи с кодом на C. Если вы скомпилируете его как C ++, сообщение об ошибке (без приведения) укажет на вашу ошибку.
Все, что будет делать актерский состав, это скрывать ошибки, которые могут укусить вас в другом месте. Это не поможет. Не делай этого.