![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| wertklop |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.9.2008 Репутация: нет Всего: нет |
Добрый день!
Ситуация такая, пишу приложение с использованием Android NDK в Eclipse. Подключаю #include <string.h>. Есть код:
Eclipse выдает ошибку: Invalid arguments ' Candidates are: void * memcpy(void *, const void *, ?) ' хотя для остальных ф-й все нормально, без ошибок. Почему так происходит? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
случаем у тебя нет макросов с именами source или destination?
|
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
все верно так как memcpy копирует побайтово, но поскольку можно скопировать какой нибудь класс POD типа, то сделали не unsigned char * в memcpy а void *.
Ну а чтобы произвести копирование нужно всего лишь привести к void * типу
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Dem_max, конвертация любого указателя (кроме указателей на методы класса) к void* происходит неявно.
|
|||
|
||||
| wertklop |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.9.2008 Репутация: нет Всего: нет |
интересно то, что все работает без изменений, но(!!!) если изменить расширение файла с *.cpp на *.с
Как быть? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
wertklop, выложи минимально возможный код, в котором воспроизводится проблема.
Попробуй так же подключать <cstring> вместо <string.h>. На stackoverflow пишут, что это может быть из-за проблемы самого эклипса. |
|||
|
||||
| wertklop |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.9.2008 Репутация: нет Всего: нет |
минимально возможный код в 1м сообщении. подключать <cstring> не получается - пишет Unresolved inclusion: <cstring>. Может просто в Android NDK нет такой либы? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
<cstring> - это стандартный хидер для С++.
|
|||
|
||||
| kamre |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 24.3.2006 Репутация: 1 Всего: 13 |
Эклипсо-проблемы, у него весьма кривой анализатор кода. К компилятору это никак не относится. Можно, например, отключить этот анализатор и полагаться только на ошибки от компилятора. P.S. у меня кстати не выдает ошибки анализатор: ![]() Это сообщение отредактировал(а) kamre - 9.5.2013, 04:40 |
|||
|
||||
| wertklop |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.9.2008 Репутация: нет Всего: нет |
Решил проблему следующим образом:
h-файл
с-файл
Далее в Android.mk дописал название с-файла в LOCAL_SRC_FILES, а в нужном cpp-файле просто подключил вышеописанный h-файл. |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |