Я переношу проект на iPhone, и он использует realloc
и memcpy
, которые не найдены. Какой заголовок включить?
Это проект, смешивающий Objective C и C++, и я начинаю теряться.
Заранее спасибо за вашу помощь!
Я переношу проект на iPhone, и он использует realloc
и memcpy
, которые не найдены. Какой заголовок включить?
Это проект, смешивающий Objective C и C++, и я начинаю теряться.
Заранее спасибо за вашу помощь!
In C:
#include <string.h> // memcpy
#include <stdlib.h> //realloc
В C++ удалите .h
и префикс c
. В C++ они будут помещены в пространство имен std
, но также являются глобальными.
#ifdef __cplusplus
/#else
для автоматического включения правильных вариантов для C или C++.
- person cp.engr; 26.01.2017
string.h
и stdlib.h
работают в C++ так же хорошо, и вы можете продолжать использовать realloc
, memcpy
вместо std::realloc
, std::memcpy
и т. д., что, кажется, больше соответствует тому, что хотел исходный постер.
- person tobi_s; 10.10.2018
В C++ более идиоматично использовать std::copy
, чем memcpy
в C, хотя последний работает так же хорошо. Чтобы получить std::copy
, вам нужно #include <algorithm>
.
Однако прямого C++ эквивалента realloc
нет.
realloc
в C++ (поскольку, конечно, стандартная библиотека C++ включает в себя всю стандартную библиотеку C89). Я сказал, что не существует новой стандартной библиотечной функции C++, которая включает в себя функциональность realloc
, как std::copy
для memcpy
. Хотя я полагаю, что мое намерение не очевидно, если мой ответ читается изолированно, а не в сочетании с другим, уже принятым ответом.
- person Tyler McHenry; 18.02.2010