Задать вопрос
Denisov80
@Denisov80
Юный Программист

Как запустить код Си в проекте С++?

Подскажите пожалуйста, есть исходный код - который успешно компилируется в проекте под Си.
Копирую этот код в проект под C++, сразу появляются ошибки типа:
не удается преобразовать 'char*' в 'int*' для аргумента '1' в 'int
недопустимое преобразование из 'int*' в 'int'

И ещё куча Варнингов
warning: narrowing conversion of '143' from 'int' to 'char' inside

Программа на Си успешно работает.
Как можно игнорировать это, на Си ведь игнорируется, либо это зависит от настроек Компилятора, а точнее его версий?
Иначе код переписать не могу, видимо не хватает опыта.
(имеется массив HEX байтов - char[], далее этот массив передается в функцию по ссылке - которая принимает int и далее обрабатывает эти байты (функция Копипаст из Дизассемблера IdaPro) )
  • Вопрос задан
  • 252 просмотра
Подписаться 2 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
не удается преобразовать 'char*' в 'int*' для аргумента '1' в 'int

Как правило, ошибка. Функция хотела указатель на 4-байтовые слова — а мы передаём ей указатель на байты.
Если очень нужно рассматривать int* как char* (например, работаем не с данными какого-то определённого типа, а просто с байтами в памяти) — используйте reinterpret_cast.

недопустимое преобразование из 'int*' в 'int'

Почти всегда ошибка. Функция хотела число — а мы ей передаём ей указатель.
Если реально по какой-то причине нужно значение указателя воспринимать как число — используйте reinterpret_cast.

Возможен и другой вариант — вы просто упустили операцию «разыменовать» *.

warning: narrowing conversion of '143' from 'int' to 'char' inside

Точно ошибка — 143 не вписывается в char (−128…127). Если очень надо, используй static_cast.

Покажите лучше код, и я устрою ему ревизию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы