Страницы

Поиск по вопросам

понедельник, 24 февраля 2020 г.

C++. Чем заменить тип huge компилятора Turbo C в GCC MinGW?

#c #mingw #borland #типы


Есть кусочек кода программы компилируемой в Borland Turbo C.
Там есть такое объявление:

huge x[240001];


При попытке скомпилировать эту строку компилятором GCC (MinGW32) происходит ошибка: 


  huge does not name a type.


Соответственно вопросы:

1) Что за тип такой huge? Каков sizeof() в байтах?

2) Это структура или что?

3) Где объявлен этот тип? В каких заголовочных файлах?

4) Чем его можно заменить в GCC (MinGW32)?

P.S. Желательно точное соответствие замены, т.к. важен размер, порядок байт при считывании/записи
массива x[240001], 10 байт пишется в файл fwrite(x,10,240000,ou);.
    


Ответы

Ответ 1



О какой версии компилятора идет речь? Просто начиная с версии 3.0 компилятор назывался просто Borland C++, без Turbo. Так что я вынужден считать, что речь идет о Turbo C 2.0. Тогда... Тогда это были 16-разрядные программы, которые работали в DOS в реальном режиме работы процессора, так что указатели там состояли из сегмента и смещения... Вобщем, рассказывать долго, почитайте лучше сами - например, тут или тут или где-нибудь еще. Соответственно, у вас просто выделен массив памяти с использованием такого указателя памяти, ну, а пропущенный тип в C всегда воспринимался как int. Так что это должен быть просто int x[240001];. Только учтите, что int тогда представлял собой 16-битное значение. Что до fwrite - то в приведенной у вас записи в файл пишется 240000 раз по 10 байт. Это смущает, потому что такой памяти под DOS просто не было - вся она была ограничена 640КБайтами. Так что, может, поделитесь исходником - выложив его где-то? Просто интересно посмотреть и разобраться, что же это такое программа пытается сделать. "По-моему, так" (с) Пух

Комментариев нет:

Отправить комментарий