Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.68
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
#1

Слишком большие программы! - C++

01.07.2010, 15:31. Просмотров 3544. Ответов 39
Метки нет (Все метки)

Я начинаю писать консольные приложения на Dev C++. Компилирую. Я раньше не смотрел на размер, а сейчас увидел, что он больше 400 Кб!!! и это при таком коде:
C++
1
2
#include <iostream>
int main(){}
То есть 1 модуль для консолей весит почти как программа на Delphi на визуальном проектировании!!! Подскажите как уменьшить размер программы. Или модуль другой использовать надо...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2010, 15:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Слишком большие программы! (C++):

Strtol и слишком большие числа - C++
Если strtol скормить строчку со слишком большим числом, оно вернет LONG_MAX и установит errno в ERANGE. Вопрос - если strtol скормить...

Массив: Слишком большие числа в массиве, хотя стоят ограничения диапазона (-100,100), как мне исправить это? - C++
Доброго времени суток. У меня выходят слишком большие числа в массиве, хотя стоят ограничения диапазона (-100,100), как мне исправить...

Слишком сложный код программы, ничего не понимаю( - C++
Я искал код по этому заданию: &quot;Имеется картографическая информация, представляющая собой серии пар целых чисел. Диапазон величин этих...

Решение слишком долгое! - C++
Добрый вечер всем, недавно начал изучать языки и многого не знаю. В целом разбираюсь неплохо, но не хватает практики. Написал программу...

Слишком быстрый инпут - C++
И так, я пишу программу для передачи потока через медленный радиопередатчик(заявленный максимум 10кб/с, но на деле по-моему меньше). Пишу...

Ошибка: слишком много инициализаторов - C++
почему пишет error C2078: слишком много инициализаторов (в 10 строке) #include &quot;stdafx.h&quot; #include &quot;math.h&quot; int _tmain(int argc,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
02.07.2010, 09:33 #16
МаксимМВ, для машин с винчестером на 500Гб программка объемом в 900кб - это большая трагедия???
0
PointsEqual
02.07.2010, 10:05
  #17

Не по теме:

у меня 1 террабайт )

0
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
02.07.2010, 10:07  [ТС] #18
а у меня 120 Гб!! Собираемся ставить лучше. Как допишу консоль исходник покажу.
0
PB
Просто прогер
1281 / 1068 / 11
Регистрация: 13.03.2009
Сообщений: 2,502
02.07.2010, 12:10 #19
Цитата Сообщение от МаксимМВ Посмотреть сообщение
чё это выходит бэйсик лучше C++????
Ну как сказать.
Си позиционируется как системный язык, а бейсик используется в основном для задач, прикладного типа.
Си конечно же мощнее, но бейсик проще и некоторые задачи не нём решать легче и быстрее. А вообще, язык программирования выбирают исходя из задачи!


Цитата Сообщение от МаксимМВ Посмотреть сообщение
А как программисты считают - бейсик - язык не для программистов, а для продвинутых пользователей, которые хотят решать простые задачи
Задачи бывают разные. Если не нужно создавать системные программы (например, драйверы), а только прикладные (окошки, игры), то с помощью бейсика можно написать программу не хуже чем на Си.
Ведь "бейсик" это только название языка, а возможности зависят от компилятора и библиотек функций.


Цитата Сообщение от МаксимМВ Посмотреть сообщение
А на Visual C++ как настроить на маленькие программки?
Размер программ и их скорость выполнения зависят не от языка, а от компилятора и "кривости" рук программиста.
Но если компилятор изначально создаёт гиганские исполняемые файлы, то тот уж ничего не поделаешь - лучше поискать другой компилятор.
2
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
02.07.2010, 12:14  [ТС] #20
нет но тут лучше C++ ведь я же за компьютером не юзером собираюсь быть а программистом программы писать!!! А большинство программ написано на C++.
0
PB
02.07.2010, 12:19
  #21

Не по теме:

Цитата Сообщение от МаксимМВ Посмотреть сообщение
нет но тут лучше C++ ведь я же за компьютером не юзером собираюсь быть а программистом программы писать!!!
C++ конечно же лучше, но не стоит забывать, он во много раз сложнее бейсика.
И вообще, не нужно недооценивать язык программирования, который не знаешь. Может его возможности не такие примитивные как думаешь!

Люди, программирующие на бейсике (или другом языке программирования, кроме C++), разве не программисты?

2
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
02.07.2010, 12:39  [ТС] #22

Не по теме:

но это я знаю один раз я захотел ассемблер выучить, но компилятора нормального не нашёл! А мне и не надо легче я хочу программировать! На другом языке кроме одного какого то и бейсика и ТОЛЬКО на них, думаю не настоящие программисты. А Михаилу Флёнову больше нравится Delphi и C++, он тоже к бейсику неочень А бейсик думаю тоже полезно знать. В 11 классе пригодится. А мне 12 лет. Думаю скоро разделят эту тему и будет обсуждение что лучше C++ или Basic


А мне и не нужен простой - программировать.
0
PB
02.07.2010, 12:56
  #23

Не по теме:

Если язык простой, это не значит что он не на что не годен.
Бейсики разные бывают. Конечно же не стоит программировать на "древних" диалектах, типа QBasic.
Существуют соврменные диалекты бейиска, которые, при решении многих задач, ничем не уступают C++ по возможностям, но при этом проще C++!
А на чём программировать, решает каждый для себя.

PS.
Ещё раз повторяю, "бейсик" это лишь название языка, а возможности зависят от использованого компиятора и библиотек функций

1
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
02.07.2010, 16:15 #24
Цитата Сообщение от МаксимМВ Посмотреть сообщение
d:\максим\c++ programs\mcpp\00\pn\pn\pn.cpp(24) : error C2668: sqrt: неоднозначный вызов перегруженной функции
d:\программы\microsoft visual cpp\vc\include\math.h(581): может быть 'long double sqrt(long double)'
d:\программы\microsoft visual cpp\vc\include\math.h(533): или 'float sqrt(float)'
d:\программы\microsoft visual cpp\vc\include\math.h(128): или 'double sqrt(double)'
Написано же, что sqrt может принимать float, double или long double. А ты подаешь int:
C++
1
2
3
for (int i=ot; i<n; i++){
sost=false;
for (int d=2; d<sqrt(i)+1; d++){
Попробуй так:
C++
1
for (int d=2; d<sqrt(static_cast<double>(i))+1; d++)
0
Egeni
10 / 10 / 1
Регистрация: 17.06.2010
Сообщений: 107
Записей в блоге: 1
02.07.2010, 17:27 #25
МаксимМВ, я тоже это заметил, поэтому сделал для себя пару тестов и выяснил что exe-программа в скомпилированном виде самая маленькая на C++ Builder
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
02.07.2010, 20:29 #26
Народ, не заставляйте меня применять карточки за оффтоп
0
fasked
03.07.2010, 01:47
  #27

Не по теме:

Храните программы в исходниках, чтобы места меньше занимали, а это как же. Компилировать можно только по необходимости, на один раз. А исходники еще и заархивировать можно! Тогда вообще красота будет. Представляете, программа, а весит 2Кб.

0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
03.07.2010, 10:17 #28
Цитата Сообщение от M128K145 Посмотреть сообщение
Народ, не заставляйте меня применять карточки за оффтоп
Это правильно

Значит, так, автор, слушай меня. Знаю я мало, но что знаю, за то ручаюсь
Проанализировал я твой исходник в отладчике. Что имеем?

Действительно лишнего мало. Под действительно лишним я понимаю типа отладочной информации. То есть при небольшом желании твой исходник увеличится ещё кило на сто. Это к нему присоединятся секции с отладочной информацией.

А так- львиную долю занимает секция непосредственно кода. А имеено чистых 3D940 или 252224 байта
Ну плюс секции с инициализированными данными, данными только для чтения... Но это мелочи.

Ну, в общем спешу тебя успокоить- всё, что ты написал, то и имеем. И только это. На самом деле ты написал довольно много кода. Давай на этом не заморачиваться, ведь твой пример скорее из разряда приколов. Давай писать рабочие проги и думать, как уменьшить ИХ размер.

Добавлено через 3 минуты
Цитата Сообщение от [Freeman] Посмотреть сообщение
Большие файлы это особенность только Dev С++, вот у меня например в Visual С++ 2008 такой файл всеит 27кб.
Лга, то есть ложь. Пример автора из разряда приколов. Надо сравнивать рабочие проги.

Добавлено через 8 минут
РАбочая прога это helloword
C++
1
2
3
4
#include <iostream>
int main(){
 printf ("Hello, word");
}
Вот над уменьшением подобной хери и надо работать и надо обсуждать. Щас она весит 464 кило. Лично я могу уменьшить её раз так в 30 (до 15 кило) без потери функциональности. На DEV C++.

А сколь короткой можно сделать её на Visual С++ 2008? Очень бы хотелось услышать...

Добавлено через 4 минуты
Цитата Сообщение от МаксимМВ Посмотреть сообщение
Чё, это значит что если у кого то нет Dev C++, то моя прога не пойдёт??? Какой тогда смысл писать?
Не слушай никого, нормально всё, всё пойдёт.
0
PB
03.07.2010, 11:21
  #29

Не по теме:

Цитата Сообщение от fasked Посмотреть сообщение
Храните программы в исходниках, чтобы места меньше занимали, а это как же. Компилировать можно только по необходимости, на один раз. А исходники еще и заархивировать можно! Тогда вообще красота будет. Представляете, программа, а весит 2Кб.
Программа в скомпилированом виде - 2 КБ
Откройте её в HEX редакторе или в отладчике и посмотрите какой размер кодовой секции
И учтите, это при том, что ни применялись никакие уловки чтобы уменьшить размер EXE!
Просто скомпилировал программу и всё.
Так что многое зависит от самого комплятора!

0
x-954377
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
03.07.2010, 11:38 #30
Для уменьшения размера VS2008 С++ нужно включить версию RELEASE а не DEBAG
и в коде прописать #pragma comment(linker,"/ENTRY:main") //точка входа на главную функцию
#pragma comment(linker,"/MERGE:.rdata=.rtext")

после чего EXE файл будет весить около 5 или 4кб, и причём потом может запускать на любом компе даже без VS.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2010, 11:38
Привет! Вот еще темы с ответами:

Слишком много значений инициализатора - C++
Ругается, блин. Говорит, что слишком много значений инициализатора. На втором массиве. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Слишком большой размер массива - C++
Здраствуйте! Я объявляю массив: unsigned long long int N; cin &gt;&gt; N; int *a1 = new int; Если N не очень большая, то все...

Не слишком корректное сохранение в HEX - C++
Здравстуйте! Есть проблема. for(pos = 32; pos &gt; -1; pos--) { inp = ' '; } Инициализирую массив символов(char), при...

Слишком мало аргументов в функции - C++
Привет Не могу понять каких &quot;аргументов&quot; не хватает? Выдает ошибку что в 23 строке - too few arguments to function 'double (double,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.07.2010, 11:38
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru