| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > memcpy eclipse |
| Автор: wertklop 7.5.2013, 13:49 | ||
| Добрый день! Ситуация такая, пишу приложение с использованием Android NDK в Eclipse. Подключаю #include <string.h>. Есть код:
Eclipse выдает ошибку: Invalid arguments ' Candidates are: void * memcpy(void *, const void *, ?) ' хотя для остальных ф-й все нормально, без ошибок. Почему так происходит? |
| Автор: bsa 7.5.2013, 15:16 |
| случаем у тебя нет макросов с именами source или destination? |
| Автор: Dem_max 8.5.2013, 06:42 | ||
| все верно так как memcpy копирует побайтово, но поскольку можно скопировать какой нибудь класс POD типа, то сделали не unsigned char * в memcpy а void *. Ну а чтобы произвести копирование нужно всего лишь привести к void * типу
|
| Автор: bsa 8.5.2013, 10:36 |
| Dem_max, конвертация любого указателя (кроме указателей на методы класса) к void* происходит неявно. |
| Автор: wertklop 8.5.2013, 11:25 |
| интересно то, что все работает без изменений, но(!!!) если изменить расширение файла с *.cpp на *.с Как быть? |
| Автор: bsa 8.5.2013, 14:32 |
| wertklop, выложи минимально возможный код, в котором воспроизводится проблема. Попробуй так же подключать <cstring> вместо <string.h>. На stackoverflow пишут, что это может быть из-за проблемы самого эклипса. |
| Автор: wertklop 8.5.2013, 14:38 | ||
минимально возможный код в 1м сообщении. подключать <cstring> не получается - пишет Unresolved inclusion: <cstring>. Может просто в Android NDK нет такой либы? |
| Автор: bsa 8.5.2013, 16:21 |
| <cstring> - это стандартный хидер для С++. |
| Автор: wertklop 17.5.2013, 18:37 | ||||
| Решил проблему следующим образом: h-файл
с-файл
Далее в Android.mk дописал название с-файла в LOCAL_SRC_FILES, а в нужном cpp-файле просто подключил вышеописанный h-файл. |