информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Страшный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Tailscale окончательно забанила... 
 Прекращение работы антивируса Касперского... 
 Microsoft Authenticator теряет... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Ну и еще 02.02.03 04:27  Число просмотров: 921
Автор: dl <Dmitry Leonov>
<"чистая" ссылка> <обсуждение закрыто>
> У Matt Pietrek-а есть либа libctiny - реализует _main
> _WinMain _DllMain всякие printf-ы с malloc-ами, в общем
> самые полезные функции из crt большей частью средствами
> WinAPI. При этом ее сырцы весят 17 кило, а сама либа (в
> COFF-е со всей вспомогательной инфой) - 15 кило. Если
> подрубить ее вместо стандартной библиотеки, то оставляя
> возможность использования основных crt-функций она
> увеличивает файл не на очень много.

Да на самом деле в WinAPI вполне приличное количество функций, которыми при желании можно обойтись и самостоятельно, если стоит цель минимальный размер любой ценой.

> А что действительно можно в BC собирать DDK-шные примеры
> (пусть даже и с рихтованием makefile-ов) - там же вроде
> куча чисто VC-шных расширений.
> Одна только #pragma по каталогу inc нашлась в 226-ти файлах
> (в 2k DDK) - сомневаюсь, чтоб BC поддерживал все те же
> pragm-ы, что и VC, если они даже секции кода и данных не
> захотели называть так же и ресурсы хранить так же и вообще
> им не по пути.

Я очень давно не смотрел BC. Не исключено, что они стали обеспечивать совместимость - включили же они в итоге поддержку MFC. Мне муки прикручивания любой библиотеки, автор которой забыл учесть BC, надоели году так в 95-м :)
<programming>
[C++] Тут я вот за этот язык взялся ;-) После Delphi дискомфорт ужасный, всё как-то через %опу ;-) Есть тупой вопрос про инкремент ;-) 30.01.03 11:20   [vh, йцукенг, Ktirf, Step, HandleX]
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Вопрос: есть ли в этом великом и могучем языке операция целочисленного инкремента на определённое значение? Насколько я понял MyVar++ увеличивает MyVar на единицу, а если мне надо на 30? Вот в паскале я бы написал Inc(MyVar, 30) а в сях пишу как идиот MyVar = MyVar + 30
Код неоптимизированный получается ;-)
[C++] Тут я вот за этот язык взялся ;-) После Delphi дискомфорт ужасный, всё как-то через %опу ;-) Есть тупой вопрос про инкремент ;-) 07.02.03 07:34  
Автор: elgato Статус: Незарегистрированный пользователь
<"чистая" ссылка> <обсуждение закрыто>
> Вопрос: есть ли в этом великом и могучем языке операция
> целочисленного инкремента на определённое значение?
> Насколько я понял MyVar++ увеличивает MyVar на единицу, а
> если мне надо на 30? Вот в паскале я бы написал Inc(MyVar,
> 30) а в сях пишу как идиот MyVar = MyVar + 30
> Код неоптимизированный получается ;-)
MyVar+=30; // Документацию читать надо.
[C++] Тут я вот за этот язык взялся ;-) После Delphi дискомфорт ужасный, всё как-то через %опу ;-) Есть тупой вопрос про инкремент ;-) 05.02.03 19:41  
Автор: SawJ Статус: Незарегистрированный пользователь
Отредактировано 05.02.03 19:44  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
> Вопрос: есть ли в этом великом и могучем языке операция
> целочисленного инкремента на определённое значение?
> Насколько я понял MyVar++ увеличивает MyVar на единицу, а
> если мне надо на 30? Вот в паскале я бы написал Inc(MyVar,
> 30) а в сях пишу как идиот MyVar = MyVar + 30
> Код неоптимизированный получается ;-)

Да ладно ты, мелочи ... же! Ну вот так мохно MyVar+=30
Я тя кстати очень хорошо понимаю (переход с Делфи на С) сам такой! По началу жуДь, ща на Дельфе сидеть вообще не могу, привык!
просьбы такие темы поднимать на борде Misc. А еще лучше - сразу в scrap. 04.02.03 13:30  
Автор: йцукенг <jcukeng> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Скорее уж в beginners 04.02.03 13:39  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Изначальный вопрос был задан вполне для beginners, хотя почему-то обитатели programming его туда не отправили. Ну а флейм, который дальше пошел - увы...
[C++] Ну вот, дальше — больше. Ещё вопросы из серии тупых, но на этот раз чуточку поумнее. Pls, help... 01.02.03 23:23  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Тут столкнулся с тривиальной задачей, нужно «пулять» целочисленные значения по разным ветвям обработки, тривиальный case в Паскале справился бы на-ура. А вот в сях... switch - case какой-то слабоватый. Итак, пример на Паскале ниже и вопрос в том, как это лучше всего реализовать в С:
Case MyIntegerValue of 
  0..15: DoSomthingCool(MyIntegerValue);
  16, 18, 24: DoNextCoolThing(MyIntegerValue);
  26..89, 90, 95, 101..170: VeryNiceAndCool(MyIntegerValue);
End;

---
Здесь паскальный Case во всей своей красе — выбор из диапазона, из дискретных значений (что возможно и в сяшной паре switch - case), и в последней строке выбора есть диапазоны и дискретные значения. Неужели прийдётся строить if - else?

Ну а теперь про множества. Это немного соотносится с case.
if MyChar in ['A'..'Z', 'a'..'z'] then DoSomthing — как это сделать попроще?
Я понимаю, что можно так:
if (((MyChar >= "A") && (MyChar <= "Z"))|((MyChar >= "a") && (MyChar <= "z")))
DoSomething();
но это как-то некрасиво.

Ну и потяжелее пример с типом «множество»...
Type
  TDigit = (zero, one, two, three, four, five, six, seven, eight, nine);
  TDigits = Set Of TDigit;
Var Digits: TDigits;
Begin
  Digits := [zero..two, four..six];
  Include(Digits, three);
  Digits := Digits + [seven..nine];
  // Ну и  в таком духе — операции со множествами.
End;

---
Я понимаю, для процессора это всего-навсего возня с битами в целочисленных значениях. Меня не испугает никакой язык, если в нём есть операции or, and, xor и прочяя... Но возможно, не надо изобретать колесо и есть уже что-то в самом языке?

Теперь ещё. Была у меня раньше мечта — повозится в ядре драйвером ;-) Delphi для этого не самый лучший инструмент, посколько он для этого не предназначен и включает даже в самую маленькую программу кучу инициализирующего дерьма с вызовом функций из библиотек пользовательского режима. Скажу даже, что за C я взялся, тайно движимый «ядерной» мечтою ;-) Но, наверное, взялся не за тот компилер, а именно за борландовсий С. И что я вижу — программа, которая «ничего не делает» — а именно, входит в Main и выходит из неё, без единого #include занимает 7 с лишним килобайт и выполняет кучу дерьма пользовательского режима при старте. С этим можно как-то побороться, или мне нужен другой компилятор?
Ещё в PE-заголовке драйверов выставляется флаг NATIVE subsystem, это как делается?

Заранее всем большое спасибо, надеюсь что не утомил.
[C++] Всем спасибо, приятно что многие «болеют» за C... 03.02.03 05:32  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
[C++] Ну вот, дальше — больше. Ещё вопросы из серии тупых, но на этот раз чуточку поумнее. Pls, help... 02.02.03 01:37  
Автор: dl <Dmitry Leonov>
<"чистая" ссылка> <обсуждение закрыто>
> Тут столкнулся с тривиальной задачей, нужно «пулять»
> целочисленные значения по разным ветвям обработки,
> тривиальный case в Паскале справился бы на-ура. А вот в
> сях... switch - case какой-то слабоватый. Итак, пример на
> Паскале ниже и вопрос в том, как это лучше всего
> реализовать в С:
>
Case MyIntegerValue of >   0..15: DoSomthingCool(MyIntegerValue);
>   16, 18, 24: DoNextCoolThing(MyIntegerValue);
>   26..89, 90, 95, 101..170:
> VeryNiceAndCool(MyIntegerValue);
> End;

---
> Здесь паскальный Case во всей своей красе — выбор из
> диапазона, из дискретных значений (что возможно и в сяшной
> паре switch - case), и в последней строке выбора есть
> диапазоны и дискретные значения. Неужели прийдётся строить
> if - else?

Да, в С/С++ switch простой, без диапазонов, только на сравнение с константой. В любом случае сложный паскалевский case с диапазоном развернется в такую же проверку. Часто, кстати, используется вариант с поиском по предварительно заполненной таблице.

> Ну а теперь про множества. Это немного соотносится с case.
> if MyChar in ['A'..'Z', 'a'..'z'] then DoSomthing — как это
> сделать попроще?
> Я понимаю, что можно так:
> if (((MyChar >= "A") && (MyChar <= "Z"))|((MyChar
> >= "a") && (MyChar <= "z")))
> DoSomething();
> но это как-то некрасиво.

Конкретно эта задача - проверка символа на попадание в диапазон a-zA-Z обычно решается с помощью функции isalpha, для чисел - isdigit, плюс еще несколько аналогичных функций, которые, насколько я помню, реализованы не как толпа if, а как поиск по таблице. Про множества в чистом виде - ниже.

> Ну и потяжелее пример с типом «множество»...
>
Type>   TDigit = (zero, one, two, three, four, five, six, seven,
> eight, nine);
>   TDigits = Set Of TDigit;
> Var Digits: TDigits;
> Begin
>   Digits := [zero..two, four..six];
>   Include(Digits, three);
>   Digits := Digits + [seven..nine];
>   // Ну и  в таком духе — операции со множествами.
> End;

---
> Я понимаю, для процессора это всего-навсего возня с битами
> в целочисленных значениях. Меня не испугает никакой язык,
> если в нём есть операции or, and, xor и прочяя... Но
> возможно, не надо изобретать колесо и есть уже что-то в
> самом языке?

На уровне, совместимом с классическим С - это честная возня с битами. В С++ для этого есть класс из стандартной библиотеки std::bitset, реализован вполне эффективно.

> Теперь ещё. Была у меня раньше мечта — повозится в ядре
> драйвером ;-) Delphi для этого не самый лучший инструмент,
> посколько он для этого не предназначен и включает даже в
> самую маленькую программу кучу инициализирующего дерьма с
> вызовом функций из библиотек пользовательского режима.
> Скажу даже, что за C я взялся, тайно движимый «ядерной»
> мечтою ;-) Но, наверное, взялся не за тот компилер, а
> именно за борландовсий С. И что я вижу — программа, которая
> «ничего не делает» — а именно, входит в Main и выходит из
> неё, без единого #include занимает 7 с лишним килобайт и
> выполняет кучу дерьма пользовательского режима при старте.
> С этим можно как-то побороться, или мне нужен другой
> компилятор?

Ну, например, в VC всегда можно отрубить стандартную библиотеку, определить свою точку входа вместо стандартной. Скажем, в каких-то простых loader'ах я люблю определить свой WinMainCRTStartup, в итоге вполне функциональные программы получаются размером 2к, из которых большая часть приходится на заголовок, stub и т.п.

> Ещё в PE-заголовке драйверов выставляется флаг NATIVE
> subsystem, это как делается?

У VC есть параметр линкера /SUBSYSTEM. И вообще, для таких задач VC, пожалуй, подходит больше, все-таки это родной компилятор, опять же, всякие примеры будут собираться сходу, без предварительного рихтования make-файлов (как это было раньше, по крайней мере).
[C++] Ну и еще 02.02.03 02:48  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
> Ну, например, в VC всегда можно отрубить стандартную
> библиотеку, определить свою точку входа вместо стандартной.
> Скажем, в каких-то простых loader'ах я люблю определить
> свой WinMainCRTStartup, в итоге вполне функциональные
> программы получаются размером 2к, из которых большая часть
> приходится на заголовок, stub и т.п.
У Matt Pietrek-а есть либа libctiny - реализует _main _WinMain _DllMain всякие printf-ы с malloc-ами, в общем самые полезные функции из crt большей частью средствами WinAPI. При этом ее сырцы весят 17 кило, а сама либа (в COFF-е со всей вспомогательной инфой) - 15 кило. Если подрубить ее вместо стандартной библиотеки, то оставляя возможность использования основных crt-функций она увеличивает файл не на очень много.

> У VC есть параметр линкера /SUBSYSTEM. И вообще, для таких
> задач VC, пожалуй, подходит больше, все-таки это родной
> компилятор, опять же, всякие примеры будут собираться
> сходу, без предварительного рихтования make-файлов (как это
> было раньше, по крайней мере).
А что действительно можно в BC собирать DDK-шные примеры (пусть даже и с рихтованием makefile-ов) - там же вроде куча чисто VC-шных расширений.
Одна только #pragma по каталогу inc нашлась в 226-ти файлах (в 2k DDK) - сомневаюсь, чтоб BC поддерживал все те же pragm-ы, что и VC, если они даже секции кода и данных не захотели называть так же и ресурсы хранить так же и вообще им не по пути.
[C++] Ну и еще 02.02.03 04:27  
Автор: dl <Dmitry Leonov>
<"чистая" ссылка> <обсуждение закрыто>
> У Matt Pietrek-а есть либа libctiny - реализует _main
> _WinMain _DllMain всякие printf-ы с malloc-ами, в общем
> самые полезные функции из crt большей частью средствами
> WinAPI. При этом ее сырцы весят 17 кило, а сама либа (в
> COFF-е со всей вспомогательной инфой) - 15 кило. Если
> подрубить ее вместо стандартной библиотеки, то оставляя
> возможность использования основных crt-функций она
> увеличивает файл не на очень много.

Да на самом деле в WinAPI вполне приличное количество функций, которыми при желании можно обойтись и самостоятельно, если стоит цель минимальный размер любой ценой.

> А что действительно можно в BC собирать DDK-шные примеры
> (пусть даже и с рихтованием makefile-ов) - там же вроде
> куча чисто VC-шных расширений.
> Одна только #pragma по каталогу inc нашлась в 226-ти файлах
> (в 2k DDK) - сомневаюсь, чтоб BC поддерживал все те же
> pragm-ы, что и VC, если они даже секции кода и данных не
> захотели называть так же и ресурсы хранить так же и вообще
> им не по пути.

Я очень давно не смотрел BC. Не исключено, что они стали обеспечивать совместимость - включили же они в итоге поддержку MFC. Мне муки прикручивания любой библиотеки, автор которой забыл учесть BC, надоели году так в 95-м :)
[C++] Если найдешь DDK для BC - можешь и на нем дриверы писать :-)) 02.02.03 01:23  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
> Тут столкнулся с тривиальной задачей, нужно «пулять»
> целочисленные значения по разным ветвям обработки,
> тривиальный case в Паскале справился бы на-ура. А вот в
> сях... switch - case какой-то слабоватый. Итак, пример на
> Паскале ниже и вопрос в том, как это лучше всего
> реализовать в С:
>
Case MyIntegerValue of >   0..15: DoSomthingCool(MyIntegerValue);
>   16, 18, 24: DoNextCoolThing(MyIntegerValue);
>   26..89, 90, 95, 101..170:
> VeryNiceAndCool(MyIntegerValue);
В сях case действует немного по другому - первый же встреченный case с совпадением приводит к тому, что все другие case как бы пропускаются (почему так - можно понять взглянув на код, который генерится для switch-case инструкции) - именно поэтому каждый case нужно заканчивать break-ом. Так вот, чтоб прикрутить к одной ветке исполнения несколько разных case-ов нужно просто все их указать:
switch(i) {
case 0: case 1: case 2: case 3:
do_my_stuff();
break;
case 10: case 11: case 12:
do_another_stuff();
break;
default:
do_default_stuff();
}

--- Но такой код встречается нечасто, обычно case-ы идут по предопределенным константам (кодам сообщений, ioctl-ов, чего-то еще). Если нужно например сделать что-то только для букв есть библиотечная функция: if (isalpha(char)) do_something(char); Другие типы символов можно глянуть в <ctype.h> И кстати, case-ы с не очень большим разбросом реализуются в коде при помощи таблицы указателей на функции (в общем берем нужный case используем как индекс в некой таблице и получаем искомый результат). Кстати использование всевозможных таблиц с данными - очень часто используемый прием. Если действительно жизнь не мила без множеств (set-ов) - можешь глянуть на C++ овский STL или нестандартные библиотеки типа MFC. > End;

---
> Здесь паскальный Case во всей своей красе — выбор из
> диапазона, из дискретных значений (что возможно и в сяшной
> паре switch - case), и в последней строке выбора есть
Сишный switch-case не умеет в одном case-е обрабатывать диапазоны - нет такого типа. Если нужен диапазон - нужно делать несколько case-ов.

> Ну а теперь про множества. Это немного соотносится с case.
> if MyChar in ['A'..'Z', 'a'..'z'] then DoSomthing — как это
> сделать попроще?
Собственно, см выше. Напомню:
if (isalpha(MyChar)) do_something();

> Я понимаю, что можно так:
> if (((MyChar >= "A") && (MyChar <= "Z"))|((MyChar
> >= "a") && (MyChar <= "z")))
> DoSomething();
Так, кстати, будет работать не везде. Например в кодировке EBCDIC - символы от a до z идут не непрерывно, а C задумывался как высокопортабельный язык, при этом библиотечная функция использует не 4-е сравнения (как в вышеприведенном примере), а одно индексирование и одну логическую операцию (битовое И).

> Ну и потяжелее пример с типом «множество»...
>
Type>   TDigit = (zero, one, two, three, four, five, six, seven,
> eight, nine);
>   TDigits = Set Of TDigit;
> Var Digits: TDigits;
> Begin
>   Digits := [zero..two, four..six];
>   Include(Digits, three);
>   Digits := Digits + [seven..nine];
>   // Ну и  в таком духе — операции со множествами.
> End;

---
Множеств в стандарте C нет. Есть математические библиотеки с реализациями и так далее. В стандарте C++ множества, как и многое другое есть, но не встроенные в язык, а реализованные в виде стандартной библиотеки. Это кстати соблюдается везде, где можно: все, что не нужно для самого языка выносится в библиотеку, например, в C (и C++) нет поддержки ввода/вывода на уровне языка (в отличие от паскаля, где read/write - операторы) - язык позволяет сделать это в библиотеке. Хотя может я и неточно выражаюсь, потому как эта самая библиотека стандартизирована: все реализации языка должны предоставлять то-то и то-то, а значит вроде как и тоже относятся к языку.

> Я понимаю, для процессора это всего-навсего возня с битами
> в целочисленных значениях. Меня не испугает никакой язык,
> если в нём есть операции or, and, xor и прочяя... Но
> возможно, не надо изобретать колесо и есть уже что-то в
> самом языке?
См выше. Короче, если кровь из носа нужны множества и именно на C - можешь поискать в инете куча свободных математических библиотек.

> именно за борландовсий С. И что я вижу — программа, которая
> «ничего не делает» — а именно, входит в Main и выходит из
> неё, без единого #include занимает 7 с лишним килобайт и
Маловато что-то :-)))
Вообще-то стандартное выравнивание секций для винды: 0x1000 (4 киловытеса). Именно для виндовозного PE, а не для какого-либо языка или компилятора. При этом выравниваются: заголовок, секция кода, секция данных и секция импортов. Так что минимум, чего можно добиться со стандартными установками - 16 кБ. Границу выравнивания можно уменьшить, но на фиг это никому не нужно. В сях тоже есть инициализация: как минимум проинициализировать некоторые глобальные и статические переменных (иногда не получается на этапе компиляции) и преобразовать строчку параметров строки в массив для вызова main(), вызов самого main-а и т.д.. Там не так много, но все-таки есть.

> выполняет кучу дерьма пользовательского режима при старте.
> С этим можно как-то побороться, или мне нужен другой
> компилятор?
Если собираешься писать дривера, то нужен по-луюбому (см сабж).
> Ещё в PE-заголовке драйверов выставляется флаг NATIVE
> subsystem, это как делается?
Смотри опции линкера (для VC-шного это делается так: link /subsystem:native) вот только для драйверов нужно не это

> Заранее всем большое спасибо, надеюсь что не утомил.
Не очень :-))) Наоборот, нашего полку прибыло :-)))
[C++] Если найдешь DDK для BC - можешь и на нем дриверы писать :-)) 02.02.03 01:43  
Автор: dl <Dmitry Leonov>
Отредактировано 02.02.03 01:52  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
> Вообще-то стандартное выравнивание секций для винды: 0x1000
> (4 киловытеса). Именно для виндовозного PE, а не для
> какого-либо языка или компилятора. При этом выравниваются:
> заголовок, секция кода, секция данных и секция импортов.
> Так что минимум, чего можно добиться со стандартными
> установками - 16 кБ. Границу выравнивания можно уменьшить,
> но на фиг это никому не нужно.

Отрубив стандартные библиотеки и перебив свою точку входа (и не играясь с выравниванием), легко достичь 2048 байт (которые еще что-то будут делать - крутить таймер, искать окна и т.п.). Меньше у меня не получалось, да и целью такой я не задавался :)

P.S. Задание /ALIGN:16 на пустой программе дало 496 байт :)
[C++] Про малые размеры — посмотрите на regedt32.exe в WinXP — 3584 байта. А у меня 7 кб минимум с учётом того, что выставлена галка «Use dynamic RTL», а без неё вааще за 60 килов отстоя получается. Поэтому вопрос: как отключить станд. библиотеки в BC? 03.02.03 06:02  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
[C++] Это наверное и есть минимум 03.02.03 14:27  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Так как в XP regedt32 просто ShellExecute-ит regedit.exe и все
[C++] А у меня прога ShellExecute не вызывает, просто входит в Main и выходит, а занимает 7Кб. 03.02.03 14:34  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
[C++] Где в BC отключаются std lib-ы не знаю. Но это точно где то в настройках линкера. Перейдешь на VC - обращайся :-)))) 03.02.03 15:04  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
[C++] Вообще согласен :-)) 02.02.03 02:29  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
> > Вообще-то стандартное выравнивание секций для винды:
> 0x1000
> > (4 киловытеса). Именно для виндовозного PE, а не для
> > какого-либо языка или компилятора. При этом
> выравниваются:
> > заголовок, секция кода, секция данных и секция
> импортов.
> > Так что минимум, чего можно добиться со стандартными
> > установками - 16 кБ. Границу выравнивания можно
> уменьшить,
> > но на фиг это никому не нужно.

> Отрубив стандартные библиотеки и перебив свою точку входа
> (и не играясь с выравниванием), легко достичь 2048 байт
> (которые еще что-то будут делать - крутить таймер, искать
> окна и т.п.). Меньше у меня не получалось, да и целью такой
> я не задавался :)
Да, я попытался все как можно больше упростить, и поэтому не совсем точно выразился.
На самом деле можно еще и секции слить и еще чего-нить придумать, но это извращение :-))) Щас не то время, когда нужно бороться за каждый такт или байт (эх, а хорошее было время :-))))) )
Вот именно из разряда этих извращений я где-то конкурс видел на самый маленький ELF. Там команда true или false (не помню да и не важно) в полном соответствии со стандартом ELF-а, имеющая все необходимые секции и т.д. занимала что-то около 100 байт (может и еще меньше :-))) )

> P.S. Задание /ALIGN:16 на пустой программе дало 496 байт :)
[C++] Ну вот, дальше — больше. Ещё вопросы из серии тупых, но на этот раз чуточку поумнее. Pls, help... 02.02.03 00:53  
Автор: Tamas Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
ты товарищь слишком к поскалу приык
у тебя ошибка даже в этом коде
if (((MyChar >= "A") && (MyChar <= "Z"))|((MyChar >= "a") && (MyChar <= "z")))
{
}
это должно ваглидеть так
if (((MyChar >= 'A') && (MyChar <='Z'))|((MyChar >= 'a') && (MyChar <='z')))
{
}
это конечно мелочь все ошибаются
но носамом деле C# лучьше чем паскаль
хотя switch мне ненравися !
[C++] Ну вот, дальше — больше. Ещё вопросы из серии тупых, но на этот раз чуточку поумнее. Pls, help... 02.02.03 10:56  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
> но носамом деле C# лучьше чем паскаль
Ну про C#, если хочется в ядре копаться, лучше забыть... А что касается "лучше-хуже" - зависит от решаемых задач.
> хотя switch мне ненравися !
Мне тоже. Как и else-if. Предпочитаю ветвление при помощи таблицы переходов.
[C++] Тоже сильно не люблю C# 02.02.03 18:19  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
Уж сильно начал смахивать на VB. Сборка мусора и многое другое. А уж отказ от указателей, потому как они приводят к ошибкам в программах меня вообще убил. Похоже в мелкософте еще не поняли, что к ошибкам в программах приводят компьютеры. И то не у всех и не всегда. Когда поймут - посмотрю как они от компов отказываться будут
1  |  2  |  3 >>  »  




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach