Почему компилятор жалуется, когда я не приводил результат malloc?

Я проверяю код, который не требует явного приведения результата вызова malloc, но всякий раз, когда я пытаюсь это сделать, компилятор выдает ошибку.

то есть

<code>char *somevar;
somevar = malloc(sizeof(char) * n); //error
somevar = (char *)malloc(sizeof(char) * n); // ok
</code>
 Greg Hewgill13 мая 2012 г., 01:53
Какую именно ошибку вы получаете?

Ответы на вопрос(2)

Решение Вопроса

Это происходит, если вы используете компилятор C ++ вместо компилятора C. Поскольку C ++ требует явного приведения. Проблема не только в (не) кастингеmalloc результат, но любой пустой указатель на другой указатель.

 Alex Erwin13 мая 2012 г., 02:09
Хорошо. Это имеет смысл. Поскольку используемый фреймворк написан на C, и я создаю модуль, написанный на C ++, обернутый вызовами extern, я буду подчиняться соглашениям C ++, но разработчики фреймворка этого не сделают.
 13 мая 2012 г., 02:32
Обычно лучше разделить ваш код на C и C ++ на разные модули. Компиляторы C ++ не могут компилировать C.

Вы помните, чтобы включить прототип функции? Для malloc (3) это:

#include <stdlib.h>

Ваш ответ на вопрос