- Библиотека windows h все функции
- где найти функции библиотеки windows.h и их описание
- Библиотека windows h c описание
- Содержание
- Структура [ править | править код ]
- Мнения о структуре [ править | править код ]
- История [ править | править код ]
- Стандарт ANSI [ править | править код ]
- Библиотечные заголовочные файлы ANSI Си c дополнениями C99 и C11 [ править | править код ]
- Стандартная библиотека Си в других языках [ править | править код ]
- Общая поддержка библиотек [ править | править код ]
- Встроенные функции компилятора [ править | править код ]
- Стандартная библиотека POSIX [ править | править код ]
- Реализации [ править | править код ]
- Contents
- Child header files [ edit ]
Библиотека windows h все функции
КАК быстро освоить API?
Чтобы понять что мы будем изучать, предлагаю вам на минутку перенестись в далёкие 80-ые годы теперь уже прошлого века! То были времена безраздельного правления злого волшебника DOSa. До появления доброй феи — оконной оболочки Windows труд угнетённых программистов был тяжёлым и рутинным. Подобно рудокопам, пробивающим себе дорогу в каменной породе железными молотками, писали они свои программы. Большинство программ — утилиты, базы данных, информационные системы — создавались тогда в текстовом режиме — унылом и беспросветном, где существует только 16 цветов и где экран — крохотное поле 80X25 символов. Те же смельчаки, которые решались предоставить пользователю графический интерфейс, были настоящими героями.
Почему? Ну, во-первых, никаких специальных функций для работы с графикой в DOS не было и в помине, и практически каждому разработчику приходилось либо писать свои собственные библиотеки или классы для работы с графикой, каждый раз изобретая велосипед, либо использвать те, что создали его коллеги. Это был тихий ужас! Писать графические функции приходилось чуть ли не не ассмеблере, генерируя 10-й вектор прерывания. И вот печальный итог — каждая фирма создавала свои библиотеки шрифтов, картинок и элементов управления. И каждый раз, проектируя новую программу, приходилось возвращаться к той самой печке и заново придумывать интерфейс пользователя. Представьте себе, что не было никаких стандартов, и каждый программист делал интерфейс, как Бог на душу пошлёт. Так это хорошо! — Скажете вы, — никто не зависел от стандартов, навязанных Microsoft, было простор для творчества. Так-то оно так, только программисты, которые пишут непонятные программы, отвечают, что они никакие не дизайнеры и проектировать интерфейс пользователя не их задача. В результате, очень часто программы ещё худо-бедно работали, но работать в них было сущим мучением.
Бедный пользователь был вынужден каждый раз тратить драгоценное время, чтобы понять — что же программист хотел этим сказать, когда сделал именно такие кнопки и, простите, как всё это работает?
Разработчикам игр было хуже всех. Для того, чтобы написать такую игру, как DOOM, надо было опускаться к самым низам и программировать уже не столько DOS, сколько железо, напрямую обращаясь к видеопамяти PCI видеокарты — иначе не будет быстродействия, ведь тормозит обычно графика. А если вспомнить, что в составе MS-DOS никогда не было никаких драйверов, то приходилось учитывать все популярные на тот момент видеокарты, программируя графику для каждого типа отдельно, чтобы потом игра вообще пошла! Может быть вы помните те времена, когда приходилось вручную указывать тип видеокарты, а для звуковой карты указывать IRQ, DMA и количество каналов? Какой пользователь может это знать?
С появлением Windows появилась прекрасная возможность сосредоточить свои силы не столько на внешнем обрамлении программы — кнопках, флажках и меню, сколько на её содержании, сути — том, что она реально делает. Это на самом деле важно, так как труд программистов занимает много времени, а значит, стоит больших затрат. Для разработчиков на языке СИ была написана обширная библиотека windows.h, включавшая в себя всю поднаготную Windows и позволявшая в значительной степени унифицировать процесс разработки. А следовательно, и снизить затраты на разработку ПО. Всю эту огромную спецификацию программирования под Windows назвали API (Application Programming Interface) — интерфейс прикладного программирования.
API покрывает собой всё — графику, элементы управления, системные функции, работу с устройствами и ещё многое другое. По сути, API функции это промежуточно звено между пользователем и ядром операционной системы. При работе программы API функции превращаются в системные вызовы и обрабатываются ядром ОС. Ядро в свою очередь позволяет скрыть от программиста всё железо, представляя всё hardware, как виртуальные устройства — виртуальную видеокарту, виртуальный монитор, виртуальный принтер.
Время шло, и компанией Microsoft была разработана библиотека классов MFC (Microsoft Foundation Classes), а компанией Borland OWL (Object Window Library), облачившие API в объектно-ориентированный вид. Теперь уже никто не программирует окна и графику на процедурном API с нуля, для этого есть другие, более универсальные средства. Но несмотря на это, до сих пор API поддерживается всеми библиотеками классов и очень широко используется. Ни одна библиотека классов не включает в себя всех API-функций. Очень часто разработчики решают за нас — что нам нужно, а без чего мы обойдёмся. Всегда, когда под рукой нет нужного средства, на помощь приходят API-функции. И если вы хотите, чтобы программа работала быстрее, а выполнимый файл занимал меньше места, не ленитесь использовать API-функции.
Ежегодно спецификация API пополняется новыми функциями, которые внедряются в систему с помощью патчей и сервисных пакетов. С каждой новой версией Windows, API разрастается в геометрической прогрессии, и выпускаемые по ней спецификации выглядят уже, как многотомные энциклопедии. Это основа-основ Windows. Используя нужные API-функции, вы всегда сможете сделать в всё, что захотите. Windows станет для вас ласковым ручным котёнком. Вы сможете рисовать на экране всё, что захотите, и самое удивительное — это будет работать!
В последнее время выходит великое множество литературы, посвящённой «интересным возможностям Windows», вроде «Windows глазами хаккера» или «Прикольные штучки для Windows», «Как напугать пользователя». Большинство исходных текстов в них написано именно на API.
Поскольку мы только начинаем изучение программирования для Windows, процедурный API-код подойдёт нам как нельзя лучше. Он поможет понять механизм программирования для Windows, даст нам базовые знания об этой операционной системе, её принципах и механизмах, подготовив в полной мере к изучению библиотек классов MFC и VCL. Изучив работу элементов управления, мы рассмотрим некоторые неочевидные на первый взгляд возможности Windows, заглянув за ту самую запретную черту, куда можно попасть только зная язык API.
КАК можно обойтись только windows.h?
Разработчики Windows в своё время явно погорячились, когда решили, что программист обойдётся одним единственным библиотечным файлом. Сначала было всё ничего, но он стал разрастаться и если бы вы его решили распечатать, вам пришлось бы сразу купить новый картридж для принтера и толстенную пачку бумаги. С каждой новой версией Windows число API функций всё прибывало, росло число структур, макросов и типов данных. На сегодняшний день windows.h включает в себя более 1000 одних только констант.
#define WM_QUIT 0x0012
А кроме того, прототипы ВСЕХ API-функций. Что было делать? Современный файл windows.h разделили на 3 составляющих по назначению: kernel, user и gdi. Теперь эти файлы носят такие названия:
winuser.h — объявления из модуля USER.EXE или ассоциированые с ним
wingdi.h — интерфейс графических устройств (GDI), работа с графикой
windef.h — определение фундаментальных типов данных
winnls.h — поддержка национального языка в локализованных версиях
wincon.h — консольный ввод-вывод, минующий интерфейс графических устройств
winbase.h — базовый программный интерфейс.
и другие.
В любом случае, к API-программе придётся подключать только windows.h. И это большой плюс. В программировании под DOS приходилось отдельно подключать библиотеку для работы со строками string.h, графическую библиотеку graphics.h, библиотеку ввода-вывода stdio.h. Windows.h «знает» не только все API-функции, но кроме того ещё и все функции языка СИ, которые мы использовали раньше. Многие библиотеки, которые в DOS актуальны, с началом программирования для Windows сразу отошли в мир иной это:: graphics.h, dir.h, stdio.h, conio.h, stdlib.h, process.h, dos.h. Не скоро теперь они встретятся нам на пути!
Файл windows.h существует до сих пор и пополняется новыми функциями и обновляется с каждой новой версией Visual Studio. При использовании библиотек классов MFC вы не будете его подключать, но только потому, что он уже подключён. В первых программах на API мы будем использовать именно его.
где найти функции библиотеки windows.h и их описание
Где найти описание команд, свойств, методов библиотеки vtools.dll
Вот встретил в программе ЗагрузитьВнешнююКомпоненту(«VTools.dll»);.
Описание функции шаблонного класса библиотеки в отдельном cpp-файле
Есть библиотека. В файле ARRAYLIST.HPP описан шаблон template class ArrayList.
Найти описание библиотеки QR-code
Добрый день. Подскажите, пожалуйста, есть ли подробное описание библиотеки qrcode в python на.
Где взять описание Windows.Media.Ocr на русском?
подскажите где взять описние Windows.Media.Ocr на русском языке? на msdn я нашел только на.
Иногда полезно(быстрее) открыть библиотеку и посмотреть какие функции, какие структуры используются
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Где найти описание IDE
Я знаю синтаксис языка C++, но никак не могу найти книгу в которой рассказалибы о различных.
Референсы, где найти описание
Есть куча библиотек в екселе, есть ли обяснение что к чему?
Где найти описание PDQTapi?
Kto stalkivalsj s etim controlom. gde ego mogno vzjt (estestvenno bazplatno) i est li na nego.
Где найти описание типа IHTMLWindow7?
Здравствуйте, у меня такая проблема — есть IWebBrowser2 и я могу подтягивать без проблем любые.
Где найти описание функций ABCObjects
Всем привет. Очень много просидел в интернете, но никакой информации не нашёл про модуль.
Где можно найти описание функций С++?
Подскажите , плиз, где можно найти самое подробное описание функций С++ (синтаксис, прототип.
Библиотека windows h c описание
В программе используются функции, описанные в различных заголовочных файлах из стандартной библиотеки windows.h:
LoadIcon — загружает значок (Icon) для использования в программе;
LoadCursor — загружает курсор (Cursor) мыши;
GetStockObject — получает графический объект — кисть (Stock);
RegisterClassEx — регистрирует класс окна;
CreateWindow — создает окно на основе класса окна;
ShowWindow — выводит окно на экран;
UpdateWindow — заставляет окно перерисовать свое содержимое;
GetMessage — получает сообщение из очереди сообщений;
TranslateMessage — преобразует некоторые сообщения, полученные с помощью клавиатуры;
DispatchMessage — отправляет сообщение оконной процедуре;
BeginPaint — инициирует начало процесса рисования окна;
GetClientRect — получает размер рабочей области окна;
DrawText — выводит на экран строку текста;
EndPaint — прекращает рисование окна;
PostQuitMessage — вставляет сообщение «Завершить» в очередь сообщений;
DefWindowProc — выполняет обработку сообщений по умолчанию.
Идентификаторы и типы данных
При программировании в среде Windows используют соглашения по именованию переменных — идентификатор переменной составляется из букв или частей слов, отражающих смысл этой переменной.
Префиксы некоторых переменных, использующихся в дальнейшем: c — символ; by —BYTE (беззнаковый символ); n -короткое целое; i -целое; cx, cy — целое (длины x и y; с означает счет — count); b или f —BOOL (булево целое, f — флаг — flag); w — WORD (беззнаковое короткое целое); l — LONG (длинное целое); dw — DWORD (беззнаковое длинное целое); fn — функция; s — строка; sz -строка, завершаемая нулем (string terminated by zero); h —описатель (handle); p — указатель (pointer).
Идентификаторы, написанные прописными буквами, задаются в заголовочных файлах Windows. Двух- или трехбуквенный префикс, за которым следует символ подчеркивания, показывает основную категорию ее принадлежности, например: CS — опция стиля класса (Class Style); IDI — идентификационный номер иконки (ID Icon); IDC — идентификационный номер курсора; WS — стиль окна (windows style); WM — cообщение окна.
Аналогичен смысл новых типов данных, например, тип UINT — 32-разрядное беззнаковое целое (unsigned int), PSTR — указатель на строку символов (pointer string), т.е. char*; LONG — длинное целое.
WndProc возвращает значение типа LRESULT — Long RESULT. Функция WinMain получает тип WINAPI (как и любая другая функция Windows), а функция WndProc получает тип CALLBACK — эти идентификаторы являются ссылкой на особую последовательность вызовов функций, которая имеет место между ОС Windows и ее приложением.
В программе использованы структуры данных: MSG — структура сообщения (message); WNDCLASSEX — структура класса окна; PAINTSTRUCT — структура рисования; RECT — структура прямоугольника.
При обозначении переменных структуры пользуются именем самой структуры и строчными буквами, например, переменная msg — структура типа MSG; wndclass — структура типа WNDCLASSEX.
В программе используются идентификаторы, предназначенные для разных типов описателей (handles): HINSTANCE — описатель экземпляра (instance) самой программы; HWND — описатель окна (handle to a window); HDC — описатель контекста устройства.
Основная программа
Для работы программы подключен файл windows.h, содержащий заголовочные файлы с объявлениями функций, структур и числовых констант. Далее следует декларация прототипа функции WndProc — «оконная процедура» для окна программы Hello.
Основной функцией (точкой входа программы), аналогом стандартной функции main языка Си для Windows является функция WinMain:
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow);
использующая последовательность вызовов WINAPI и возвращающая ОС Windows целое значение. В ней используются четыре параметра:
hInstance — описатель экземпляра — уникальное число, идентифицирующее программу;
hPrevInstance — предыдущий (previous) экземпляр; если в данный момент не было загружено копий программы, то hPrevInstance = 0 или NULL;
szCmdLine — указатель на строку, в которой содержатся любые параметры, переданные в программу из командной строки;
iCmdShow — число, показывающее, каким должно быть выведено на экран окно в начальный момент; обычно: SW_SHOWNORMAL (1) — вывод окна нормального размера, SW_SHOWMINNOACTIVE (7) — окно должно быть изначально свернутым; префикс SW означает «показать окно» (show window).
Регистрация класса окна
Окно всегда создается на основе класса окна. Класс окна идентифицирует оконную процедуру, которая выполняет процесс обработки поступающих сообщений.
Перед созданием окна необходимо зарегистрировать класс окна, вызвав функцию RegisterClassEx, это расширенная версия функции Register-Class (Ex — extended — расширенный). Параметр функции — указатель на структуру типа WNDCLASSEX, определенную в заголовочных файлах:
Стандартная библиотека языка программирования С |
|
Стандартной библиотекой языка Си (также известная как libc, crt) называется часть стандарта ANSI C, посвященная заголовочным файлам и библиотечным подпрограммам. Является описанием реализации общих операций, таких как обработка ввода-вывода и строк, в языке программирования Си. Стандартная библиотека языка Си — это описание программного интерфейса, а не настоящая библиотека, пригодная для использования в процессе компиляции.
Содержание
Структура [ править | править код ]
Имя и характеристики каждой функции указываются в файле, именуемом заголовочным файлом, но текущая реализация функций описана отдельно в библиотечном файле. Наименование и возможности заголовочных файлов становятся общими, но организация библиотек по-прежнему остается разнотипной. Стандартная библиотека обычно поставляется вместе с компилятором. Так как компиляторы языка Си часто обеспечивают расширенную функциональность, не определенную стандартом ANSI C, стандартная библиотека одного компилятора несовместима со стандартными библиотеками других компиляторов.
Мнения о структуре [ править | править код ]
Большая часть стандартной библиотеки языка Си производит впечатление удачно спроектированной. Некоторые отдельные части, дававшие преимущество в прошлом, могут провоцировать ошибки. Функции строкового ввода gets() (и применение scanf() для считывания вводимых строк) являются источником множества переполнений буфера, поэтому большинство руководств по программированию советуют избегать подобных приемов. Функция strcpy() также весьма печально знаменита. Ещё одной неоднозначной функцией является strtok() — функция, разработанная как простейший лексический анализатор, но имеющая множество «подводных камней» и потому весьма трудная в использовании.
Выбор применения типа size_t вместо int для числа элементов, указанных для fread() и fwrite() является несовместимым с разработанной общей семантикой для size_t (для представления количества байтов). [ источник не указан 3030 дней ]
stdio достаточно ограничен (слишком высокий уровень для использования во многих ситуациях) и стандарт не позволяет пользователю самостоятельно переназначать или расширять его свойства. В итоге, для множества приложений разрабатываются собственные библиотеки-обертки вокруг механизмов более низкого уровня и функций, реализуемых ОС, таких как POSIX. Например, stdio не работают с сигналами или асинхронными непакетными режимами ввода-вывода, которые широко используются в сетевых серверах. В итоге, на функции stdio могут полностью полагаться только серверы, использующие модель целого процесса для клиента, для обслуживания их на POSIX-совместимых системах в пакетном режиме ввода-вывода.
Определенных функций стандартной библиотеки нужно избегать при разработке многопоточных приложений. Примитивы контроля потоков предназначались для оставшейся части ОС и игнорируют общие стандарты, как например, библиотеку потоков POSIX, ожидая, что программисты языка Си самостоятельно об этом позаботятся, работая с повторным использованием и синхронизацией. Ни язык Си, ни его стандартная библиотека никак не проверяют подобные системноспецифичные результаты.
История [ править | править код ]
Язык программирования Си до стандартизации не обеспечивал встроенной функциональности, как, например, операции ввода-вывода (в отличие от таких традиционных языков, как Кобол и Фортран). Позже, в сообществе программистов, работавших с языком Си, зародились идеи, которые реализовались в то, что мы сейчас называем Стандартной библиотекой языка Си, для поддержки этой функциональности. Большинство этих идей в итоге объединились в определении стандарта языка программирования Си.
И Unix, и Си были созданы в AT&T’s Bell Laboratories в конце 1960-х — начале 1970-х. В 1970-е язык программирования Си начал пользоваться невероятной популярностью. Множество университетов и организаций начали создание собственных вариантов языка, более подходящих для собственных нужд. С началом 1980-х проблемы совместимости между различными реализациями языка Си стали слишком очевидными. В 1983 году Американский национальный институт стандартов (ANSI) сформировал комитет для принятия стандарта языка Си, известный как «ANSI Си». Эта работа вылилась в создание так называемого стандарта C89 в 1989. Часть итогового стандарта была набором библиотек, названная Стандартная библиотека ANSI Си.
Последующие версии стандарта языка Си добавляли некоторые новые и наиболее полезные заголовочные файлы в библиотеку. Поддержка этих новых расширений зависела от реализации.
Заголовочные файлы , и были добавлены в Приложении 1 (сокращенно NA1) — дополнении к Стандарту языка Си, ратифицированному в 1995.
Заголовочные файлы , , , , и были добавлены в C99, версии Стандарта языка Си, опубликованном в 1999.
Стандарт ANSI [ править | править код ]
Стандартная библиотека ANSI Си состоит из 24 заголовочных файлов, каждый из которых можно подключать к программному проекту при помощи одной директивы. Каждый заголовочный файл содержит объявления одной или более функций, определения типов данных и макросы. Содержание этих заголовочных файлов перечисляется ниже.
В сравнении с некоторыми другими языками (например Java) стандартная библиотека крайне мала. Библиотека обеспечивает поддержку основного набора математических функций, обработку строк, конвертацию типов, файловый и консольный ввод-вывод. Она не содержит стандартный набор «контейнерных типов» как стандартная библиотека шаблонов языка C++, компоненты для работы с графическим пользовательским интерфейсом (GUI), сетью и прочей разнообразной функциональности, которую Java поддерживает по стандарту. Главным преимуществом маленькой стандартной библиотеки является упрощение работы с окружением ANSI Си по сравнению с другими языками, а следовательно и упрощение портирования программ на языке Си на новые платформы.
Множество прочих библиотек было разработано для поддержки схожей функциональности, обеспечиваемой другими языками в их стандартных библиотеках. Например, в проекте разработки окружения рабочего стола GNOME был разработан набор графических инструментов GTK+ и GLib — библиотека контейнерных структур данных, как впрочем и множество других известных примеров. Разнообразие доступных библиотек означает, что некоторые инструменты верхнего уровня, со временем подтвердили свою полезность. Значительным минусом является то, что они часто не слишком успешно взаимодействуют друг с другом, поэтому программистам зачастую привычнее работать с различными наборами библиотек, а их наборы могут быть доступны на различных специфических платформах.
Библиотечные заголовочные файлы ANSI Си c дополнениями C99 и C11 [ править | править код ]
Содержит макрос утверждений, используемый для обнаружения логических и некоторых других типов ошибок в отлаживаемой версии программы. |
Набор функций для работы с комплексными числами. (Появилось в C99) |
Содержит функции, используемые для классификации символов по их типам или для конвертации между верхним и нижним регистрами независимо от используемой кодировки (обычно ASCII или одно из её расширений, хотя есть и реализации, использующие EBCDIC). |
Для проверки кодов ошибок, возвращаемых библиотечными функциями. |
Для управления средой, использующей числа с плавающей точкой. (Появилось в C99) |
Содержит заранее определенные константы, описывающие специфику реализации свойств библиотеки для работы с числами с плавающей точкой, как, например, минимальная разница между двумя различными числами с плавающей точкой (_EPSILON), максимальное число цифр точности (_DIG) и область допустимых чисел (_MIN, _MAX). |
Для точной конвертации целых типов. (Появилось в C99) |
Для программирования в кодировке ISO 646. (Появилось в NA1) |
Содержит заранее заданные константы, определяющие специфику реализации свойств целых типов, как, например, область допустимых значений (_MIN, _MAX). |
Для setlocale() и связанных констант. Используется для выбора соответствующего языка. |
Для вычисления основных математических функций |
Объявляет макросы setjmp и longjmp, используемые для нелокальных переходов |
Для управления обработкой сигналов |
Для доступа к различному числу аргументов, переданных функциям. |
Для булевых типов данных. (Появилось в C99) |
Для определения различных типов целых чисел. (Появилось в C99) |
Для определения нескольких стандартных типов и макросов. |
Реализует основные возможности ввода и вывода в языке Си. Этот файл содержит весьма важную функцию printf . |
Для выполнения множества операций, включая конвертацию, генерацию псевдослучайных чисел, выделение памяти, контроль процессов, окружения, сигналов, поиска и сортировки. |
Для работы с различными видами строк. |
Для типовых математических функций. (Появилось в C99) |
Заголовочный файл наряду с предоставляет поддержку для параллельного программирования. (Появилась в C11) |
Для конвертации между различными форматами времени и даты. |
Для обработки «широких» потоков и нескольких видов строк при помощи «широких» символов (поддержка набора языков). (Появилось в NA1) |
Для классификации «широких» символов. (Появилось в NA1) |
Стандартная библиотека Си в других языках [ править | править код ]
Некоторые языки обеспечивают функциональность стандартной библиотеки Си при помощи своих собственных библиотек. Библиотека может быть адаптирована для структур языка, но семантика операций остается схожей. Язык программирования C++, например, содержит функциональность стандартной библиотеки ANSI Си в пространстве имен std (например, std::printf , std::atoi , std::feof и т. д.), в заголовочных файлах со схожими именами как в Си (« cstdio », « cmath », « cstdlib » и т. д.). К другим языкам, в которых применяются схожие подходы относятся, например, D и Python. В последнем, к примеру, встроенный объект file определен как «реализованный при помощи пакета stdio языка Си»[1], так что доступные операции (открытие, чтение, запись и т. д.), как ожидается, должны иметь поведение как у соответствующих функций языка Си.
Общая поддержка библиотек [ править | править код ]
Пока не стандартизировано, но программы на языке Си могут зависеть от библиотек подпрограмм, которые содержат код, используемый компилятором во время работы. Код, инициализирующий процесс для операционной системы, например, перед вызовом main() , реализован в библиотеке времени исполнения языка Си (C Run-Time Library, CRT) для данной версии компилятора. Код библиотеки CRT может помочь с реализацией других особенностей языка, как например, обработка неперехваченных исключений или реализация работы с числами с плавающей точкой.
Стандартная библиотека языка Си только регламентирует наличие вышеупомянутых подпрограмм и их поведение. Так как реализация компилятора может зависеть от наличия этих дополнительных функций, то все зависит от того, какие подпрограммы собраны в Стандартную библиотеку языка Си, таким образом любая программа, разработанная с их помощью, будет нуждаться в них.
Хотя часто путают их со Стандартной библиотекой языка Си из-за их комплектации, библиотека CRT не является стандартизированной частью языка и зависит от особенностей поставки программного продукта.
Встроенные функции компилятора [ править | править код ]
Некоторые компиляторы (например, GCC [1] ) поддерживают внутренние версии множества функций Стандартной библиотеки языка Си; то есть, реализации функций записываются в компилируемый объектный модуль, а программа вызывает внутренние версии вместо функций общей библиотеки Си. Это уменьшает накладные расходы при вызове функции, особенно если вызов функции заменяется встроенными вариантами, и разрешается использование других форм оптимизации (если компилятор поддерживает управление характеристиками внутренних вариантов), но может приводить к проблемами при отладке (например, внутренние версии не могут быть заменены инструментальными версиями для проверки).
Стандартная библиотека POSIX [ править | править код ]
POSIX (и SUS) определяют число подпрограмм, которые могут быть доступны помимо определенных в Стандартной библиотеке языка Си; они часто реализуют аналогичную функциональность со Стандартной библиотекой с различной степенью схожести. Например, glibc реализует такие функции как fork в libc.so, но перед вызовом библиотеки потоков объединяются в glibc, хотя это заявлено как отдельная библиотека с собственным флагом линковщика. Зачастую, такая POSIX-совместимая функциональность рассматривается как часть библиотеки; соответствующая библиотека Си, таким образом, может быть идентифицирована как ANSI или ISO библиотека языка Си.
Реализации [ править | править код ]
Существует множество реализаций, поставляемых как с различными операционными системами, так и с компиляторами языка Си. На BSD системах, к примеру, системная библиотека встроена в операционную систему и поддерживается общим репозиторием исходников. На большинстве систем библиотека может быть найдена под именем « libc ».
Хотя существует очень много реализаций, вот небольшой список самых популярных библиотек:
- GNU C Library — самая распространенная реализация, используемая в Linux
- Microsoft C Run-time Library
- dietlibc — альтернативная небольшая реализация Стандартной библиотеки языка Си
- uClibc — Стандартная библиотека языка Си для встраиваемых систем на базе Linux
- Newlib — Стандартная библиотека языка Си для встраиваемых систем (MMU-less) [2]
- klibc — применяется главным образом для загрузки Linux-систем.
- eglibc — разновидность glibc для встраиваемых систем.
- musl — реализация стандартной библиотеки языка Си для Linux, стремящаяся быть совместимой в первую очередь с современными стандартами, во вторую очередь с glibc. [3]
windows.h is a Windows-specific header file for the C and C++ programming languages which contains declarations for all of the functions in the Windows API, all the common macros used by Windows programmers, and all the data types used by the various functions and subsystems. It defines a very large number of Windows specific functions that can be used in C. The Win32 API can be added to a C programming project by including the header file and linking to the appropriate libraries. To use functions in xxxx.dll, the program must be linked to xxxx.lib (or libxxxx.dll.a in MinGW). Some headers are not associated with a .dll but with a static library (e.g. scrnsave.h needs scrnsave.lib).
Contents
Child header files [ edit ]
There are a number of child header files that are automatically included with windows.h. Many of these files cannot simply be included by themselves (they are not self-contained), because of dependencies.
windows.h may include any of the following header files:
- excpt.h — Exception handling
- stdarg.h — variable-argument functions (standard C header)
- windef.h — various macros and types
- winnt.h — various macros and types (for Windows NT)
- basetsd.h — various types
- guiddef.h — the GUID type
- ctype.h — character >Extra includes [ edit ]