Annex C (informative) Compatibility [diff]

C.1 C++ and ISO C [diff.iso]

C.1.3 Clause [conv]: standard conversions [diff.conv]

[conv.ptr]
Изменение: для преобразования void* в тип указателя на объект требуется приведение типов.

char a[10];
void* b=a;
void foo() {
  char* c=b;
}

ISO C примет такое использование указателя на void, присвоенного указателю на тип объекта. C ++ не будет.
Обоснование: C ++ больше старается, чем C, обеспечить безопасность типов во время компиляции.
Влияние на исходный объект: удаление семантически четко определенного объекта.
Сложность конвертации: Можно автоматизировать. Нарушения диагностирует переводчик C ++. Исправление заключается в добавлении литья. Например:

char* c = (char*) b;


Насколько широко используется: это довольно широко используется, но хорошая практика программирования - добавлять приведение при назначении указателя на пустоту для указателя на объект. Некоторые переводчики ISO C выдают предупреждение, если приведение не используется.