Итак, я пытаюсь сохранить ответ от HTTP-запроса libcURL в C-строку, которая будет проанализирована позже. Код ответа написан полностью на C, тогда как все остальное находится на C++ и с любым другим компилятором C++, он должен работать нормально. Но когда я пытаюсь скомпилировать, даже если я даю аргументы «-x c», за которыми следует имя файла, я получаю эти конкретные ответы.Ошибка: присвоение char * из несовместимого типа void *
g++ main.cpp -x c cJSON.c -x c respbuffer.c -lcurl -lm
./respbuffer.c:14:9: error: assigning to 'char *' from incompatible type 'void *'
s->ptr = malloc(s->len+1);
^~~~~~~~~~~~~~~~~
./respbuffer.c:23:9: error: assigning to 'char *' from incompatible type 'void *'
s->ptr = realloc(s->ptr, new_len+1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
Как ни странно, эта ошибка появляется только при компиляции с помощью g ++. Если я использую gcc, он работает нормально, и он работает достаточно гладко. Для любопытных я написал все в Xcode, и я компилирую GCC 4.2.1.
В C это было бы хорошо ... но на C++ вам нужно указать правильный тип указателя. – Dmitri
Возможно, вы должны скомпилировать свои источники C отдельно от своего C++, а затем связать файлы объектов после этого. – Dmitri
Обычно не удается скомпилировать несколько исходных файлов в одном вызове компилятора, особенно когда они находятся на нескольких языках. Я думаю, что большинство людей собирали ваши файлы с четырьмя командами: один для g ++ для компиляции кода на C++, два для gcc для компиляции файлов C и, наконец, еще один вызов g ++ для связывания трех объектных файлов с библиотеками и создания исполняемый файл. –