Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #88, АПРЕЛЬ 2006 г.

Си с нуля

Николай gorl Андреев

Хакер, номер #088, стр. 088-112-2


* Стартуй студию (или в случае 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 <windows.h>

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

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

{return 0;}

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

#include <windows.h>

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

{

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

return 0;

}

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

#include <windows.h>

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

#include <stdio.h>

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

int main(int argc, char **argv)

{

printf("Hello, world!");

return 0;

}

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

Назад на стр. 088-112-1  Содержание  Вперед на стр. 088-112-3