Пятница, 2024-03-29, 1:18 PM
Главная страница | Регистрация | Вход Приветствую Вас заблудившийся пакет | RSS
Меню сайта

Категории каталога
Программирование [58]
.. все с этим делом связаное..
Нейронные сети [4]
Нейронные сети, использование алгоритмы роботы
OC [6]
Unix, FreeBSD, Windows, Linux Описание, совети, секреты, настройки
WEB [25]
web-programming и все с этим связаное
Сети [2]
Описание сетей, сетевых технологий, настройки и некоторые секреты
Мабила [9]
Описание мобильных технологий, программинг под мабилу, и просто интересные моменты
Разное [10]
то что не вошло в другие категории.. прикольные истории про программеров и деятелей информационной индустрии
История [6]
История этого компьтерного мира и некоторых ее учасников
FREE [3]
free on the web..

Наш опрос
Какие категории сайта вам самые интересные?

Результаты · Архив опросов

Всего ответов: 139

Начало » Статьи » Программирование

Си с нуля
8. User mode – фигня. Сделал первый драйвер.

9. Попросили написать ботнет за два дня. Взялся.

Код на Си ставит в тупик? Чувствуешь себя ущербным, разбирая многостраничные листинги сплойтов? Друзья смеются над тобой, а мама привязывает тебе на шею котлету, чтобы хотя бы собачки с тобой дружили? Заправься как следует ноотропами и энергетиками - они тебе пригодятся, сейчас ты будешь кодить на Си. Или умрешь.

[присоединяйся!]

Знаешь, у меня в последнее время начало появляться ощущение, что нас, си-кодеров, как-то все меньше и меньше становится. Все в Delphi подались и там и остались. Delphi - удобная штука. И запутаться в ней практически невозможно - не то что в си. Компиляторов у нас бездна, среды разработки вообще не всегда прилагаются, а без них не всякий кодер разберется, что к чему. Привыкшему к Delphi, у которого все на своих местах, вряд ли вдохновит все это дело. Вот приводятся у кого-нибудь статьи в тексте на родном си-коде. Что написано - понятно, а как заюзать - нет. Знаешь, я не буду тебя мучить синтаксисом или подробной документацией всех ключей того или иного компилятора - с этим, думаю, у тебя и без меня достаточно геморроя. Я просто самым банальным образом покажу, как создать проект и начать в нем что-нибудь писать. Что-угодно. Хоть Hello world, хоть RAT.

[давай определимся]

Я себе и Microsoft изменять не стану, поэтому слов "давай определимся со средой и компилятором" ты здесь не прочтешь. Вернее, не прочтешь в родном для них контексте. Тут все очень просто. Два слова. Первое - Visual. Второе - Studio. Здоровый такой пакет, в который входит Visual C++. Он-то нам и нужен. По-моему мнению, ничего лучше найти ты не сможешь. Я в этом уверен. Сейчас уже прилично повылезло версий студии. На рынке можно найти целую тучу:

MS VS 6.0 - для любителей поштамповать драйвера;

MS VS .NET 2002 (7.0) - первая студия заточенная под .NET, однако не потерявшая очарования шестой;

MS VS .NET 2003 - ненавистная мне версия, проекты которой не читаются моей любимой седьмой;

и то ли вышедшая, то ли еще невышедшая, но совершенно точно появившаяся в емуле MS VS .NET 2005, которая нашему брату, по-моему, абсолютно не нужна.

Для тихого старта я всегда советую седьмую. Доставай ее любыми возможными и невозможными путями и радуйся - большинство всей нечисти, что мешает жить нормальному пользователю воровством паролей, написано именно на ней.

[новый проект]

Современные системы программирования легко сбивают с толку еще зеленого кодера тем, что предлагают ему все мыслимые и немыслимые возможности. Хочешь, говорят, мы тебе сразу целый Word в виде шаблона приложения дадим? Или, мол, хочешь, MFC, ATL, VCL и еще миллион разной фигни в своем проекте поиметь? О ужас. Прочь! Прочь, демоны! Нам всего этого не надо. Нам нужен простой и пустой проект. Алгоритм его получения следующий:

* Стартуй студию (или в случае 6.0 - сам си).

* В появившейся среде жми File -> New -> Project.

* Нас интересует обычное win32-приложение на си, поэтому переходи в закладку Visual C++ Projects и выбирай Win32 Project. Все остальное, предложенное студией, - ересь и рассмотру не подлежит. Фи.

* Указывай внизу имя проекта и куда его плюхнуть, а затем стучи по кнопке OK.

* Должен появиться ужасный Win32 Application Wizard, который, если оставить без внимания и сразу нажать на Finish, обеспечит тебя тонной чужого и совершенно бесполезного кода в своем проекте. В визарде переходи в закладку Application Setting.

* Здесь тебе следует отметить, что приложение, которое ты создаешь, - Windows Application и что проект должен быть пуст (Empty project). Даже если ты хочешь консольное приложение - все так и оставь, я ниже объясню как к нему перейти.

* После всего проделанного тобой должно появится пустое и серое окно студии. Ничего интересного не предвещающее, зато с новеньким проектом слева в Solution Explorer.

* Жми правой клавишей на название проекта (не солюшена, а именно проекта) и выбирай Add -> Add new item. Мы хотим добавить в пустой проект файл, в котором мы, собственно, и будем писать нашу программу.

* Выбирай С++ File, вбивай имя и жми OK.

[первая программа]

Теперь перед тобой открыт файл с расширением cpp, который будет скомпилирован, если ты полезешь в меню Build и наткнешься там на элемент Build <имя проекта>. Чтобы ты не думал, что я тебе лапшу на уши все это время вешал, показываю как этим пользоваться.

Обозначаю сначала в программе хидер на все случаи жизни:

#include

Потом определяю пустую функцию, с которой начнется выполнение программы. У обычных приложений - это WinMain, у консольных - просто main.

int WINAPI WinMain(HINSTANCE, HINSTANCE, PTSTR, int)

{return 0;}

Она ничего не делает, просто ноль возвращает. Да нам и не нужно чтобы она что-то делала. Хотя ради разнообразия можно вставить после первой фигурной скобки вызов функции MessageBox, чтобы не казалось, что мы все это время писали программу_которая_ничего_не_делает. Смотри:

#include

int WINAPI WinMain(HINSTANCE, HINSTANCE, PTSTR, int)

{

MessageBox(0, "Здраствуй, Мир!", "Ты прекрасен!", 0);

return 0;

}

Если же ты ретроманьяк и хочешь консольное приложение, то нам придется вначале объяснить линкеру, что мы консольники, и немного изменить главную функцию.

#include

// для функции printf свой хидер

#include

#pragma comment(linker,"/SUBSYSTEM:CONSOLE")

int main(int argc, char **argv)

{

printf("Hello, world!");

return 0;

}

Прагма в пятой строчке определяет тип нашего приложения. С тем же успехом вместо CONSOLE там могло красоваться WINDOWS или NATIVE. Прагма - штука жутко полезная. Вот захочешь, чтобы твой helloworld 1Кб занимал, добавишь строку:

// стандартная точка входа, заталкиваемая компилятором, заменяется нашей

#pragma comment(linker,"/ENTRY:WinMain")

И почти все лишнее из программы исчезнет. Можно еще секции смержить (ключ /MERGE), убрать всякие проверки, CRT и подобную фигню, но я обещал, что не буду о документации. Для этого есть MSDN, без которого, кстати, ни один нормальный windows-кодер еще не обходился. Коэффициент must have у него - 100%. Так что вместе со студией тебе абсолютно точно нужно обзавестись MSDN. Вот. Надеюсь, дорогой Delphi-кодер, этого короткого материала хватит тебе для того, чтобы написать твою первую программу на си и, как говорят в BHC, вступить и компилировать.

Чтобы скомпилить программу, просто нажми CTRL+SHIFT+B. Заодно убедишься, что все приведенные листинги настоящие.
.

Источник: http://xakep.ru

Категория: Программирование | Добавил: X-SAM (2006-07-27) | Автор: Николай gorl Андреев
Просмотров: 1148 | Комментарии: 1 | Рейтинг: 0.0

Всего комментариев: 1
1 -= RoBinZon =-  
0
Ничего так статейка...От души посмеялся пока читал, хотя пишу не на си... Молодец автор)

Респект


Имя *:
Email *:
Код *:

Украинская Баннерная Сеть
Поиск по каталогу

Кнопки друзей

Статистика
Рейтинг сайтов Powered by MyPagerank.Net

Copyright DEBUGGER © 2007 Используются технологии uCoz