@Sector567

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

Подскажите, как переделать функцию масштабирования из с++ в просто СИ
Программа загружает BMP изображение меняет его разрешение и сохраняет
Сейчас все работает, но нужно реализовать функцию изменения разрешения на язык си. У меня никак не получается.

(основная проблема заключается в неявном указатели this. Не получается его заменить)
так как код довольно объемный и здесь не проходит, то выложил его сюда. Хотя на функции загрузки и сохранения можно даже не смотреть- проблема именно в изменении разрешения на си
так как код довольно объемный и здесь не проходит, то выложил его сюда. Хотя на функции загрузки и сохранения можно даже не смотреть- проблема именно в изменении разрешения на си
https://pastebin.com/UedJVPPc
  • Вопрос задан
  • 5685 просмотров
Пригласить эксперта
Ответы на вопрос 3
@res2001
Developer, ex-admin
Указатель this? В Си классов нет, вам нужно избавится от классов.
Класс переделывайте по следующей схеме:
1.все члены данных класса переходят в аналогичную структуру на Си как есть.
2.все методы класса реализуются в виде обычных функций, первым параметром в функции передавайте структуру из п.1, можете указатель на структуру назвать this, тогда в коде функции не придется this заменять на что-либо другое.
Ответ написан
@Mercury13
Программист на «си с крестами» и не только
Перед нами совершенно необъектный код, на вид тупо написанный на Си средствами Си++. Так что будет несложно.
1. Убрать из структуры private/public.
2. Вынести функции из структуры, явно прописав в них this:
int BMP::Load(char FileNames[])
→
int BMPLoad(struct BMP* this, char FileNames[])

3. Для старых версий Си — поднять определения всех переменных на верх функции.

А что нам с масштабированием? — на вид написан на том же Си и ничего не требует, кроме задания этого this.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы