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

Как создают маленькие приложения? (размером до ~50-70Кб) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сменный График работы на месяц http://www.cyberforum.ru/cpp/thread638507.html
Всем Здравствуйте! Столкнулся с нестандартной задачей. Необходимо сделать График работы на месяц. Кто сталкивался с данной задачей?! Может есть какието наработки или идеи. Вообщем меня интересует сам алгоритм вычислений построения графика. Основные условия: МИН раб дней подряд МИН вых дней подряд Требуемое количество сотрудников в выходной
C++ Секция resource подскажите. вот у меня есть в файлах ексешных секция .rsrc только там данные размещены не последовательно.. т.е. между данными есть пустые места... http://www.cyberforum.ru/cpp/thread635684.html
C++ Ошибка компиляции как положительный результат
Товарищи, подскажите, пожалуйста, есть ли возможность средствами плюсов следить за ошибками компиляции? Необходимо в процессе компиляции встретить некоторое выражение, удостовериться, что на нём произошла ошибка компиляции, и продолжить компиляцию дальше. При этом в итоге компиляция должна пройти успешно, то есть эта ожидаемая ошибка должна быть подавлена. Получается нечто вроде исключений, но...
кое-что про const C++
решил обновить свои знания про const и везде вижу что const это константа инициализировать нужно при объявлении.....ну это мы и так знаем а еще такое "константная переменная" это типа "Небесная тверь" или "под сенью солнца" меня интересует когда она инициализируется на этапе компиляции или при исполнении вот так ведь правильно const int d=5; int n; т.е размер массива известен до...
C++ exception : 0xC0000005: Access Violation http://www.cyberforum.ru/cpp/thread632008.html
Разработка идет по windows mobile 6. Возникла необходимость в определенном случае менять данные в памяти по адресу 0x02020000 cо смещение 0x4a. Написал в лоб: int offset = 0x4a; int Addr = 0x02020000; Addr += offset; char * c = (char *) Addr; *c = 0x1; Выдает исключение: exception : 0xC0000005: Access Violation. Нет доступа к памяти. Попытался сделать через ReadProccessMemory и...
C++ Можно ли написать такую программу Здравствуйте! Мне нужна программа, которая содержала бы в себе всего два поля, при заполнении которых, содержимое этих полей сохранялось в файл на сервере (сайте например). Так же, нужно чтобы программа содержала кнопку "Отправить", для передачи содержимого полей на сервер и сообщение о удачной отправке. Можно ли написать такую программу на С++? подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17265 / 5519 / 343
Регистрация: 30.03.2009
Сообщений: 15,024
Записей в блоге: 26
19.08.2012, 11:50     Как создают маленькие приложения? (размером до ~50-70Кб)
wolfalone, разговор начинает напоминать разговор слепого с глухим. Я тебе об одном, а ты о другом. Давай чтобы не распространяться я покажу конкретный пример и задам конкретный вопрос. Я не программирую под виндами, а потому попросту не знаю, как этот вопрос сформулировать в контексте винды и любой их IDE. Вопрос ставится в контексте линукса, тем более, что с ним ты знаком

Имеется пример:

C
#include <string.h>
 
int main (void)
{
  int x = 0;
 
  if (x)
    strcasestr(0, 0);
 
  return 0;
}
Компилируем его в режиме с оптимизациями и без оптимизаций. В обоих случаях используем статическую линковку, чтобы итоговый бинарник не зависел от внешних библиотек. Далее сравниваем размеры, полученные в обоих случаях

Bash
$ gcc t.c -static
$ ls -l a.out
... 586230 ...
$ gcc -O2 t.c -static
$ ls -l a.out
... 577892 ...
Вопрос N1. Почему включение оптимизаций для исходника из трёх строк размер бинарника уменьшился аж на 8 килобайт?

Вопрос N2. Почему при замене strcasestr на strstr данный эффект не проявляется?

Ну и скажу сразу, в хидерах оба интерфейса описаны как функции, но не макросы, из-за чего мог бы возникнуть такой эффект

Цитата Сообщение от wolfalone Посмотреть сообщение
Собственно, отсуда и подобный вопрос: как авторам программ (для примера возьмём модули инсталляторов или самораспаковывающихся архивов), удаётся достичь столь мирезных размеров приложения? Они используют чистый WinAPI?
Причина в том, что они НЕ используют сторонних библиотек. Библиотеки, как правило, никаких новых принципиальных возможностей не дают, а просто делают программирование более удобным, поскольку winapi неудобен для программирования. Возможно ты когда-нибудь обращал внимание на то, что программы, написанные на чистом винапи, как правило, являются очень топорными с точки зрения удобства пользования (либо слишком примитивными, а потому удобный пользовательский интерфейс там и не нужен). Всё это растёт от того, что чистый винапи неудобен для программирования, особенно больших приложений

Добавлено через 22 минуты
Ну и добавлю, что причины, по которым использование библиотек (типа VCL) раздувает бинарник, примерно те же самые, что и причины в моём примере. И в основе всего лежит одна и та же штука: в полученном бинарнике много кода, который твоя программа никогда не исполнит, но который пришлось прилинковать к бинарнику
 
Текущее время: 10:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru