rethink their coding style…

C++*
Выдержка из исходников gcc, файл libcpp/files.c

Copy Source | Copy HTML
  1. /* off_t might have a wider range than ssize_t - in other words,
  2. the max size of a file might be bigger than the address
  3. space. We can't handle a file that large. (Anyone with
  4. a single source file bigger than 2GB needs to rethink
  5. their coding style.) Some systems (e.g. AIX 4.1) define
  6. SSIZE_MAX to be much smaller than the actual range of the
  7. type. Use INTTYPE_MAXIMUM unconditionally to ensure this
  8. does not bite us. */
  9.    if (file->st.st_size > INTTYPE_MAXIMUM (ssize_t))
  10.    {
  11.       cpp_error (pfile, CPP_DL_ERROR, "%s is too large", file->path);
  12.       return false;
  13.    }
  14.  
  15.       size = file->st.st_size;
+58
16 февраля 2009, 15:44
8
salmin 1,5

комментарии (15)

+4
aleo #
# (Anyone with
# a single source file bigger than 2GB needs to rethink
# their coding style.

Кто-нибудь с таким встречался?
+12
salmin #
ну в этом по идее и есть тонкий юмор :)
+1
zabr #
Видел ексель файл на 1 гиг с одним листом заполненым данными на 50000 строк.
Думаю если кто то постоянно строки вставляет копи пастом по страниц 200 + хтмл какой нить + весь проект, то за 4 года может файл исходник так разрастись имхо…

но помоему никто не творит такого…
0
AlexSuslin #
очень даже просто такой файл мог быть получен при экспорти данных в excel-файл с какого нибудь разросшегося проекта
0
zabr #
Все проще, если файл не в режиме монопольного доступа то при частом его обновлении через шаровые папки он разрастается историей изменений.
+4
salmin #
надо разделять понятия «данные» и «программа». я видел файл с данными размером 10Гб — это был HD-фильм :) конечно, 1гб в экселе — это _не_ нормально, но, тем не менее, гораздо лучше, чем 1гб исходного кода на Си.
+1
WarGoth #
Всегда удивлялся, на сколько дальновидными бывают программисты. Это и представить-то сложно, а предвидеть…
0
stoune #
Теоретически придумать могу. Засунуть например данные в код. Не помню то ли в Java толи в С# было ограничение на размер файла, а мне хотелось засунуть туда таблицу калибровочных данных, долго плевался.
+59
CharnaD #
Это еще что… я в проекте нашел

// Напутствие потомкам (присно следовать да блюсти строжайше): ручная
// правка автоматически сгенерированного кода не доведёт до добра. Коли
// вас, несчастных да умом обделённых, не пущают к генератору, или же
// история не сохранила и руин оного, то ничего вам не остаётся, кроме
// как главою бить о сруб светлицы да отраву пить. Сочувствую, коли
// вам выпала сия доля, но чем-либо облегчить вашу участь не в моей
// власти. Да пребудет с вами сила.

Так и вышло — генератор был утерян. Отраву пил, сайт переделывал.
+1
A_G_K #
go to bash :)
не публиковали? такое нельзя держать в себе. надо делиться и не только здесь :)))))))
мое ИХМО.
+3
navix #
Или на It-happens?
0
mechmind #
на ibash
0
bogolt #
хмм теоретически можно получить большой исходный файл если кодировать ресурсы в исходный код. В той же Qt есть утилита, которая превращает бинарные данные в массивы, чтобы хранить ресурсы программы в коде. Хотя понятно что это имеет смысл лишь когда эти ресурсы не столь уж большие, 2 гига явный перебор =)

а про кодинг стайл — стараюсь в проекте не допускать более двух файлов длиной тысячу строк. Да и эти можно было бы значительно сократить при должном рефакторинге.
0
stoune #
Я когда то заганял некоторые данные прямо в код. Но если не сделать специально отдельную секцию, в Windows например обычно загрузит весь бинарник в память. Я тут подумал в GameDev-е иногда может возникнуть потребность загнать и больше, хотя конечно редко без этого нельзя обойтись подгрузкой из файла.
+2
Ogra #
В GameDevе 2 гига только из файла ресурсов. А не то скачивание патчей и апдейтов убьет нахрен все сервера поддержки.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.