|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.05.2009, 22:45 | #1 |
Пользователь
Регистрация: 02.05.2009
Сообщений: 27
|
Вопрос про размер экзешников и Include'
Здравствуйте.
Не так давно я начал изучать С++, сегодня решил для проверки своих знаний, написать небольшую игру в 160 строк. Результат компиляции 149 кбайт, в паскале такая же игра была бы примерно 7-8 кбайт. Возникли подозрения, что С++ статический прицепляет все Include'ы которые к нему присваиваются. Как можно уменьшить размер файла? Заранее спасибо!
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.
|
13.05.2009, 23:23 | #2 |
Тупой студент
Форумчанин
Регистрация: 12.05.2007
Сообщений: 614
|
2Qousio во первых. кол-во подключенных инклудов никак не зависит на размер бинарника. в исполняемый файл всключаются лишь те функции/классы, которые так или иначе вызываются из твоей программы.
во вторых. что за игра? какие либы юзал? или быть может дебаг проект создал ты? (с). скорее всего твоя паскалевская версия юзает динамическую библиотеку, в то время когда версия на си включила этот код в исполняемый файл. выложи код, скажу точно |
14.05.2009, 01:13 | #3 | |
Заснувший
Форумчанин
Регистрация: 13.03.2009
Сообщений: 213
|
Цитата:
Создаю пустой проект(консольный например или GDI) и пишу в него код(примерно строк 200) в итоге размер exe около 6.5 кб. Дальше просто вписываю #include <iostream.h>(остальной код не изминяю) и размер подскакивает до почти трёх сотен килобайт. Как я понимаю - это особенность конкретного компилятора или нет.... |
|
14.05.2009, 07:28 | #4 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Какая сборка то? А то для Debug'а это вполне нормально
|
14.05.2009, 13:58 | #5 |
Пользователь
Регистрация: 02.05.2009
Сообщений: 27
|
Вот код программы: (Пришлось залить на Pastebin, потому-что говорит "Вы ввели слишком длинный текст (5278 символов). Пожалуйста, сократите его до 5000 символов.")
http://pastie.org/477799 Приблизительно такой же код написан в паскале, вот только вместо Windows.h используется crt. Компилятор VC++ 2008. Подозреваю, что дело в Iostream... Даже программа в несколько строк с подключенным iostream очень большая.
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.
|
14.05.2009, 14:39 | #6 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
VC++ 2008 Express Edition.
Debug версия занимает 46Кб Release - 13,5 Кб. Если в Release вместо /MD в кодогенерации поставить /MT, то уже будет 155Кб, но тут уже хоть ни одного хедера не подключай, а меньше размер не будет) |
14.05.2009, 14:55 | #7 | |
Пользователь
Регистрация: 02.05.2009
Сообщений: 27
|
Цитата:
Я просто через командную строку компилировал "cl -EHsc hangman.cpp" Сейчас попробовал через IDE получилось 46 кб. Нашел опцию где release версию выбираешь, беда в том, что я не вижу где он создает компилированный файл? Прочесал все папки в Мои документы\Visual Studio 2008, но там экзешника нету o_O #Edit: Total Comьander походу завис, после перезапуска папка отобразилась. Спасибо за помощь! А как через командную строку release версию компилировать?
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.
Последний раз редактировалось Qousio; 14.05.2009 в 15:10. |
|
14.05.2009, 15:29 | #8 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
В свойствах проекта в разделе С++ есть последний пункт командная строка. У тестового проекта моего написано:
Release: /O2 /Oi /GL /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /MD /Gy /Fo"Release\\" /Fd"Release\vc90.pdb" /W3 /nologo /c /Zi /TP /errorReportrompt Debug: /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /Gm /EHsc /RTC1 /MDd /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W3 /nologo /c /ZI /TP /errorReportrompt Параметры всякие в принципе в свойствах проекта так же называются, так что легко можно определить что за что отвечает |
14.05.2009, 15:44 | #9 | |
Пользователь
Регистрация: 02.05.2009
Сообщений: 27
|
Цитата:
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.
|
|
14.05.2009, 16:56 | #10 |
Новичок
Джуниор
Регистрация: 22.12.2007
Сообщений: 204
|
Не соглашусь. В колледже при первом вопросе почему бы не подключить все библиотеки сразу? даётся ответ если ты не хочешь чтоб твоя программа весила до х....... мб. и этот объём был забит ненужными файлами.
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос про string | xaero93 | Общие вопросы Delphi | 1 | 22.03.2009 16:57 |
Запуск экзешников по очереди | Airou | Общие вопросы Delphi | 2 | 03.09.2008 21:15 |
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) | Albert2008 | Общие вопросы Delphi | 4 | 21.08.2008 15:33 |
вопрос про IP | ЧИЖ | Работа с сетью в Delphi | 1 | 23.06.2008 13:53 |
У меня вопрос про базы данных,а точнее про таблицы!!! | Alexij | Общие вопросы Delphi | 1 | 13.04.2008 23:24 |