Тут размещают свои топики новички в С/С++.

Тема в разделе "LANGS.C", создана пользователем nitrotoluol, 4 мар 2007.

  1. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    573
    Адрес:
    Russia
    MSVC 6 генерит 32-разрядные РЕ-шки. Имхо, не может ннкакая студия в 16-бит.
     
  2. hamper

    hamper Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2005
    Сообщения:
    37
    Адрес:
    Russia
    1.52 кажется может
    [​IMG]
     
  3. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    573
    Адрес:
    Russia
    Таки да, http://bytepointer.com/msvc/index.htm

    качать вроде здесь, http://vetusware.com/

    но вам (вроде / кажется / но это не точно) придется искать вин9х или Ме, чтобы сабж заработал корректно

    в принципе у меня есть вмварный вин98, могу поделиться :)
     
    Последнее редактирование: 3 авг 2018
  4. Intro

    Intro Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    101
    Понятно, мелкософт очень быстро прекратил поддержку платформы DOS16, странно, ну очень быстро! Ещё Вынь95 не успел выйти, хотя может так и надо... Ладно понятно.
     
  5. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    573
    Адрес:
    Russia
    MS очень нелегко удалось отвязать мир от дос. Видел опрос в зарубежном программерском журнале 1993 года, мол, под какие ОС вы планируете писать - судя по результатам опроса, 4/5 опрошенных вообще мастдайку как целевую платформу не воспринимали. И это не какой-нибудь замшелый 1990-87 (386 проц вышел в 1985), это год появления процессора Пентиум.

    Вот по вашему вопросу, еще, может пригодится, https://vk.com/wall-123534288_53 https://vk.com/wall-123534288_4

    Те же самые проблемы у MS были с переводом публики на DirectX. Игры win95-only начиная с 1997 стали появляться, а там уже и аппаратное ускоренное 3d подвезли. Собственно, три-дэ + этот ваш интернет и продвинули винду, иначе все сидели бы в досе и в ус не дули.
     
    Последнее редактирование: 11 авг 2018
  6. Intro

    Intro Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    101
    Ладно, я скачал Visual C++ 1.52. Просто как-то потребовалось собрать проект, который под Дос16 ТС++3.1 на VS2010, дак выскочило почти 300 ошибок и лишь через три дня танцев с бубном удалось завершить компиляцию. Хотя мне ДОС16 сам по себе мало интересен, но в таких случаях вполне нужен.
    ЗЫ
    Что ещё, ах да компилятор-транслятор МАСМ, это lcc но пока не разобрался с его командами.
    Да это очень прикольно иметь компилятор который транслирует код в МАСМ, мощь макросов МАСМа и самого С, а ещё лучше С++, только транслятор С++ под win32 я пока не нашёл.
     
  7. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.490
    Адрес:
    г. Санкт-Петербург
    GCC с опцией -S транслирует любой поддерживаемый язык в ассемблерный код.
     
  8. Intro

    Intro Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    101
    А макросы в блоке _asm{...} работают? Работает ли оператор ORG? Мне без него никак. Надо что бы компилятор не обладал как таковым встроенным ассемблером, всё делает внешний ассемблер. Иначе говоря в блоке _asm команды просто игнорируются, ну может только проверка на существования идентификаторов с предупреждением.
     
  9. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.490
    Адрес:
    г. Санкт-Петербург
    А просто прилинковать asm-файл к С++ не хотите? Просто не понимаю вот таких вот замудростей. Если надо писать на асме - так напишите отдельный файл и слинкуйте потом с C++.
     
  10. Intro

    Intro Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    101
    Всё просто, сам проект XRayExtensions на MASM'е, а С/С++ просто синтетический сахар, который должен упростить создания сложного кода, как то так. Можно там бинарник с помощью VS C++ создать, и как-то всё это соединить, на как именно, пока не знаю. По мне проще найти или уже самому создать транслятор С/С++ в МАСМ, а что, МАСМ много чего понимает, структуры, виртуальные функции, локальные переменные, получается в трансляторе надо разобраться с выражениями, остальное просто преобразуется в высокоуровневый код МАСМ по простым алгоритмам.
     
  11. M0rg0t

    M0rg0t Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    492
    Как и чем заменить векторы в чистом Си? Я видел в инете какие-то либы, но это увеличит проект, а мне надо чистый код. Т.е. есть сорц С++ вида
    Код (C++):
    1. vector<uint32_t> valKey;
    2. while (nval != val)
    3. {
    4. ++keys;
    5. uint16_t key = getSomething(buf, 2 + i);
    6. val = getSomething(buf, 4 + i);
    7. nval = getSomething(buf, 8 + i);
    8. valKey.push_back(key + pagesize * page);
    9. valKey.push_back(val + pagesize * page);
    10. ++readkeys;
    11. i += 4;
    12. }
    Нужно создать структуру и выделить память, или как ? Или просто выделить память и писать туда. Что-то мозг кипит с этой ерундой.
     
  12. f13nd

    f13nd Active Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    381
    Придумай структуру вида указатель-позиция-размер и сделай пару функций, которые будут ее обслуживать. Аналог push_back при необходимости должен выделять буфер побольше, переносить содержимое предыдущего буфера в него, освобождать память предыдущего буфера, и дописывать данные в новый.
     
  13. M0rg0t

    M0rg0t Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    492
    f13nd, спасибо. Кстати, я слышал, что плохо слишком часто вызывать realloc, чревато чем-то. Лучше выделить сразу большой объем. Стоит так делать или нет?
     
  14. f13nd

    f13nd Active Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    381
    С GlobalAlloc с таким сталкивался, не интересовался даже почему. В определенный момент функция перестает выделять память, при том, что предыдущие буфера освобождаются. Обычно размер следующего буфера в 2.5 раза скалирую относительно предыдущего+дописываемых данных, не так часто перевыделяется буфер.
     
    Последнее редактирование: 16 окт 2018
  15. M0rg0t

    M0rg0t Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    492
    Еще такой вопрос. Реально ли собрать бинарник из С++ кода, без CRT или какие там есть стандартные либы? Ну т.е. все эти New, Vector, **_cast - это особенности языка или библиотека?
     
  16. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.490
    Адрес:
    г. Санкт-Петербург
    Реально. Просто недостающие функции придётся самому подсовывать линкеру. В gcc делается при помощи флага -nostdlib.
     
  17. M0rg0t

    M0rg0t Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    492
    SadKo, не совсем понял. ООП - это часть самого языка или часть CRT? Я понимаю, что можно самому скомпилировать и посмотреть асм-листинг, но мб кто-то сталкивался уже с этим. Си без CRT я знаю как и что, а с плюсами опыта раньше не имел. Сейчас есть сорц, я вот в раздумьях - или переписывать на Си, или можно как-то это использовать.
     
  18. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.490
    Адрес:
    г. Санкт-Петербург
    На самом деле, C++ можно использовать без CRT, но это чревато тем, что придётся реализовать самостоятельно:
    - функции статической инициализации, если будете конструировать объекты как глобальные либо статические переменные;
    - new, new[], delete, delete[];
    - функции генерации/отлова и обработки исключений, если будете их использовать;
    - динамическое приведение типа через dynamic_cast<>, если будете использовать RTTI;
    - всякие арифметические мелочи типа сложения, вычитания умножения, деления одного long long на другой long long.
    Ну и нужно учитывать, что у каждого C++ реализация всего этого своя.
    Я когда увлекался написанием ОС на Watcom C++, напилил свои куски для реализации минимального окружения для работы С++:
    https://sourceforge.net/p/xskernel/code/HEAD/tree/xskernel/include/lang/
    Похожее и вам придётся сделать.
     
  19. M0rg0t

    M0rg0t Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    492
    Я ООП вообще не знаю, может и есть объекты в проекте, но это такое, разберемся.
    Вроде как в плюсах их можно переопределить? Видел сорцы , где new объявляли как функцию , вида HeapAlloc..
    Над всем остальным надо думать. Я просто пока не знаю, или переписать на С++ (не зная его), или на Си (опять же, я многих вещей в плюсах сходу не понимаю, этот язык намного строже чем Си).
     
  20. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.490
    Адрес:
    г. Санкт-Петербург
    Вы можете пойти по третьему пути - как я - писать на Си с классами. Отказаться от RTTI, STL и исключений, тогда от RTL потребуется минимум, большинство функций можно тупо как пустые заглушки реализовать.