Чтение онлайн

на главную - закладки

Жанры

Системное программирование в среде Windows

Харт Джонсон М.

Шрифт:

Для сборки программ можно воспользоваться также такими инструментальными средствами, распространяемыми в рамках проекта программного обеспечения с открытым исходным кодом (GNU), как компиляторы gcc и g++, входящие в состав комплекта инструментов Gnu Compiler Collection . Читатели, заинтересованные в подобных средствах разработки, должны ознакомиться с действующим на условиях GNU проектом MinGW , который описывается как "совокупность свободно доступных и свободно распространяемых заголовочных файлов и библиотек импорта, специфических для Windows, объединенных с наборами инструментов GNU, что позволяет создавать программы

для среды Windows, не зависящие от динамических библиотек С времени выполнения, выпускаемых третьими сторонами". В то же время, при тестировании большинства примеров программ, приведенных в книге, я эти средства не применял, но весьма успешно использовал возможности MinGW, и мне даже удавалось выполнять межплатформенную сборку для создания исполняемых программ и DLL-библиотек Windows в Linux-системах. Более того, я имел возможность убедиться в чрезвычайно высокой эффективности систем диагностики ошибок и вывода предупреждающих сообщений компиляторов gcc и g++ при разработке 64-разрядных программ.

Структура каталогов

Основной каталог носит название WindowsSmpEd3 (от Windows Sample Programs, Edition 3). Для каждой главы предусмотрен отдельный подкаталог. Все заголовочные файлы находятся в каталоге Include, а в каталоге Utilities содержатся такие часто используемые функции, как ReportError или PrintStrings. Готовые проекты помещены в каталоги Projects6 и Projects7 (для Visual C++ 6.0 и 7.0 соответственно). Исполняемые программы и библиотеки DLL для всех проектов хранятся в каталогах run6 и run7. В каталоге TimeTest содержатся файлы, которые требуются для тестирования производительности программ, описанного в приложении В. Прежде чем мы приступим к описанию содержимого отдельных подкаталогов WindowsSmpEd3, необходимо вкратце рассмотреть остальное содержимое Web-сайта.

Учебные пособия (слайды)

В каталоге Overheads содержатся слайды Power Point. Слайды включены для удобства преподавателей колледжей и университетов, которые захотят воспользоваться материалом книги в курсах своих лекций. Слайды не предназначены для коммерческого использования.

Каталог Utility

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

1. Файл ReprtErr.с содержит функции ReportError (программа 2.2) и ReportException (программа 4.1). За исключением программ grep и wc, а также программ, приведенных в главе 1, каждая из программ, запускаемых на выполнение как процесс программами из примеров, нуждается в этом файле.

2. Файл PrintMsg.c содержит функции PrintStrings, PrintMsg и ConsolePrint (программа 2.1). Так как эти функции вызываются функцией ReprtErr.с, то этот исходный файл также требуется почти во всех проектах.

3. Файл Options.с содержит функцию, которая обрабатывает параметры командной строки и часто используется, начиная с главы 2. Включайте этот исходный файл в проект любой программы, в которой используются параметры командной строки. Соответствующий листинг приведен в программе А.7.

4. Файл Wstrings.с содержит исходный код функции wmemchr, используемой в файле Options.с. Включайте этот файл в проекты в соответствии с

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

5. Файл SkipArg.с обеспечивает обработку командной строки путем пропуска одного поля аргумента при каждом вызове. Его листинг приведен в программе А.8.

6. Файл GetArgs.с содержит функцию, которая преобразует строку символов к виду argc, argv[]. Эта функция полезна при разбиении командной строки на отдельные аргументы, как это делается, например, в случае командной строки, получаемой из функции GetCommandLine, введенной в главе 6. Листинг этого файла приведен в программе А.8.

7. Файл Version.с реализует функцию DllGetVersion для библиотеки DLL, построенной из этих модулей.

Перечисленные функции можно компилировать и компоновать вместе с вызывающими программами. Однако проще скомпоновать их отдельно в виде библиотеки, статической или динамической. В проекте Utility_3_0 эти файлы с исходными кодами используются для создания библиотеки DLL, а в проекте utulityStatic — для создания статической библиотеки.

Каталог Include

В каталоге Include описаны многочисленные файлы. Одни из них используются почти во всех примерах, другие нужны только для одной или двух программ. Перечень наиболее важных файлов приводится ниже.

1. EvryThng.h, как говорит само его название, включает почти все определения, которые требуются для обычных программ, как однопоточных, так и многопоточных. В частности, он включает файлы Envirmnt.h и Support.h. Соответствующий листинг приведен в программе А.1.

2. Exclude.h содержит определения ряда переменных препроцессора, исключающих определения, которые не требуются ни одной из программ, представленных в данной книге. Эта мера позволяет ускорить компиляцию и уменьшить размер предварительно скомпилированных заголовочных файлов.

3. Envirmnt.h содержит согласованные определения переменных препроцессора UNICODE и _UNICODE, а также определения языка и подъязыка, используемые функцией ReportError. Листинг этого файла приведен в программе A.3.

4. Support.h содержит определения многих общих функций, например, ReportError, а также ряд часто используемых символических констант. Соответствующий листинг представлен в программе A.3.

5. ClntSrvr.h используется начиная с главы 11. В нем содержатся определения структур сообщений, используемых для запросов и ответов, а также определения именованных каналов сервера и клиента, почтовых ящиков, длительностей интервалов ожидания и т.п. См. программу А.5.

6. JobMgt.h используется в программах управления задачами в конце главы 6. См. программу А.5.

Распределение программ по главам

В каталоге каждой главы содержатся все программы, относящиеся к данной главе (за исключением тех, которые были помещены в каталог Utility), а также всевозможные дополнительные программы. Соответствующий их перечень, сопровождаемый кратким описанием служебных программ, представлен ниже. В названиях некоторых программ присутствует суффикс "x"; в эти программы намеренно внесены дефекты, чтобы проиллюстрировать распространенные ошибки программирования.

Поделиться:
Популярные книги

Отморозок 3

Поповский Андрей Владимирович
3. Отморозок
Фантастика:
попаданцы
5.00
рейтинг книги
Отморозок 3

Род Корневых будет жить!

Кун Антон
1. Тайны рода
Фантастика:
фэнтези
попаданцы
аниме
7.00
рейтинг книги
Род Корневых будет жить!

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Полковник Империи

Ланцов Михаил Алексеевич
3. Безумный Макс
Фантастика:
альтернативная история
6.58
рейтинг книги
Полковник Империи

Идеальный мир для Лекаря 11

Сапфир Олег
11. Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 11

Последняя Арена 2

Греков Сергей
2. Последняя Арена
Фантастика:
рпг
постапокалипсис
6.00
рейтинг книги
Последняя Арена 2

Скрываясь в тени

Мазуров Дмитрий
2. Теневой путь
Фантастика:
боевая фантастика
7.84
рейтинг книги
Скрываясь в тени

Герцог и я

Куин Джулия
1. Бриджертоны
Любовные романы:
исторические любовные романы
8.92
рейтинг книги
Герцог и я

Владеющий

Злобин Михаил
2. Пророк Дьявола
Фантастика:
фэнтези
8.50
рейтинг книги
Владеющий

Развод с миллиардером

Вильде Арина
1. Золушка и миллиардер
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Развод с миллиардером

Паладин из прошлого тысячелетия

Еслер Андрей
1. Соприкосновение миров
Фантастика:
боевая фантастика
попаданцы
6.25
рейтинг книги
Паладин из прошлого тысячелетия

Боги, пиво и дурак. Том 6

Горина Юлия Николаевна
6. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 6

Бестужев. Служба Государевой Безопасности. Книга вторая

Измайлов Сергей
2. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга вторая

Орден Багровой бури. Книга 6

Ермоленков Алексей
6. Орден Багровой бури
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Орден Багровой бури. Книга 6