No Image

Стандартная библиотека языка c

СОДЕРЖАНИЕ
0 просмотров
11 марта 2020
  • atomic (C++11)
  • condition_variable (C++11)
  • future (C++11)
  • mutex (C++11)
  • shared_mutex (C++14)
  • thread (C++11)
  • cassert
  • cctype
  • cerrno
  • cfenv (C++11)
  • cfloat
  • cinttypes (C++11)
  • ciso646
  • climits
  • clocale
  • cmath
  • csetjmp
  • csignal
  • cstdarg
  • cstdbool (C++11)
  • cstddef
  • cstdint (C++11)
  • cstdio
  • cstdlib
  • cstring
  • ctgmath (C++11)
  • ctime
  • cuchar (C++11)
  • cwchar
  • cwctype

В языке программирования C++ термин Стандартная Библиотека означает коллекцию классов и функций, написанных на базовом языке. Стандартная Библиотека поддерживает несколько основных контейнеров, функций для работы с этими контейнерами, объектов-функции, основных типов строк и потоков (включая интерактивный и файловый ввод-вывод), поддержку некоторых языковых особенностей, и часто используемые функции для выполнения таких задач, как, например, нахождение квадратного корня числа. Стандартная Библиотека языка C++ также включает в себя спецификации стандарта ISO C90 стандартной библиотеки языка Си. Функциональные особенности Стандартной Библиотеки объявляются внутри пространства имен std.

Стандартная библиотека шаблонов (STL) — подмножество стандартной библиотеки C++ и содержит контейнеры, алгоритмы, итераторы, объекты-функции и т. д. [ источник не указан 3572 дня ] Хотя некоторые программисты используют термин «STL» вместе (или попеременно) с термином «Стандартная библиотека C++».

Заголовочные файлы стандартной библиотеки C++ не имеют расширения «.h».

Стандартная библиотека C++ содержит последние расширения C++ стандарта ANSI (включая библиотеку стандартных шаблонов и новую библиотеку iostream). Она представляет собой набор файлов заголовков. В новых файлах заголовков отсутствует расширение H. [1]

Содержание

Стандартные заголовочные файлы [ править | править код ]

Нижеперечисленные файлы содержат объявления Стандартной Библиотеки.

Контейнеры [ править | править код ]

Общие [ править | править код ]

Строковые [ править | править код ]

Новое в C++11. Предоставляет утилиты для сопоставления строк с шаблоном с помощью регулярных выражений.

Стандартная библиотека
языка программирования С
  • assert.h
  • complex.h (C99)
  • ctype.h
  • errno.h
  • fenv.h (C99)
  • float.h
  • inttypes.h (C99)
  • iso646.h
  • limits.h
  • locale.h
  • math.h
  • setjmp.h
  • signal.h
  • stdalign.h (C11)
  • stdarg.h
  • stdatomic.h (C11)
  • stdbool.h (C99)
  • stddef.h
  • stdint.h (C99)
  • stdio.h
  • stdlib.h
  • stdnoreturn.h (C11)
  • string.h
  • tgmath.h
  • threads.h (C11)
  • time.h
  • uchar.h (C11)
  • wchar.h
  • wctype.h

Стандартной библиотекой языка Си (также известная как libc, crt) называется часть стандарта ANSI C, посвященная заголовочным файлам и библиотечным подпрограммам. Является описанием реализации общих операций, таких как обработка ввода-вывода и строк, в языке программирования Си. Стандартная библиотека языка Си — это описание программного интерфейса, а не настоящая библиотека, пригодная для использования в процессе компиляции.

Содержание

Структура [ править | править код ]

Имя и характеристики каждой функции указываются в файле, именуемом заголовочным файлом, но текущая реализация функций описана отдельно в библиотечном файле. Наименование и возможности заголовочных файлов становятся общими, но организация библиотек по-прежнему остается разнотипной. Стандартная библиотека обычно поставляется вместе с компилятором. Так как компиляторы языка Си часто обеспечивают расширенную функциональность, не определенную стандартом ANSI C, стандартная библиотека одного компилятора несовместима со стандартными библиотеками других компиляторов.

Мнения о структуре [ править | править код ]

Большая часть стандартной библиотеки языка Си производит впечатление удачно спроектированной. Некоторые отдельные части, дававшие преимущество в прошлом, могут провоцировать ошибки. Функции строкового ввода gets() (и применение scanf() для считывания вводимых строк) являются источником множества переполнений буфера, поэтому большинство руководств по программированию советуют избегать подобных приемов. Функция strcpy() также весьма печально знаменита. Ещё одной неоднозначной функцией является strtok() — функция, разработанная как простейший лексический анализатор, но имеющая множество «подводных камней» и потому весьма трудная в использовании.

Выбор применения типа size_t вместо int для числа элементов, указанных для fread() и fwrite() является несовместимым с разработанной общей семантикой для size_t (для представления количества байтов). [ источник не указан 3067 дней ]

stdio достаточно ограничен (слишком высокий уровень для использования во многих ситуациях) и стандарт не позволяет пользователю самостоятельно переназначать или расширять его свойства. В итоге, для множества приложений разрабатываются собственные библиотеки-обертки вокруг механизмов более низкого уровня и функций, реализуемых ОС, таких как POSIX. Например, stdio не работают с сигналами или асинхронными непакетными режимами ввода-вывода, которые широко используются в сетевых серверах. В итоге, на функции stdio могут полностью полагаться только серверы, использующие модель целого процесса для клиента, для обслуживания их на POSIX-совместимых системах в пакетном режиме ввода-вывода.

Определенных функций стандартной библиотеки нужно избегать при разработке многопоточных приложений. Примитивы контроля потоков предназначались для оставшейся части ОС и игнорируют общие стандарты, как например, библиотеку потоков POSIX, ожидая, что программисты языка Си самостоятельно об этом позаботятся, работая с повторным использованием и синхронизацией. Ни язык Си, ни его стандартная библиотека никак не проверяют подобные системноспецифичные результаты.

История [ править | править код ]

Язык программирования Си до стандартизации не обеспечивал встроенной функциональности, как, например, операции ввода-вывода (в отличие от таких традиционных языков, как Кобол и Фортран). Позже, в сообществе программистов, работавших с языком Си, зародились идеи, которые реализовались в то, что мы сейчас называем Стандартной библиотекой языка Си, для поддержки этой функциональности. Большинство этих идей в итоге объединились в определении стандарта языка программирования Си.

Читайте также:  Драйверы vaio на официальном сайте sony

И 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)
Читайте также:  Php stream socket server

Стандартная библиотека Си в других языках [ править | править код ]

Некоторые языки обеспечивают функциональность стандартной библиотеки Си при помощи своих собственных библиотек. Библиотека может быть адаптирована для структур языка, но семантика операций остается схожей. Язык программирования 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]
Читайте также:  D link dsl 200 adsl modem

Этот раздел документации содержит справочные материалы по реализации стандартов языка C и C++ языков стандарта ISO в корпорации Майкрософт. This section of the documentation contains reference content for the Microsoft implementation of the ISO standard C and C++ languages. Справочник по языку включает документацию по препроцессору, встроенным функциям компилятора и поддерживаемым языкам сборки. The language reference includes documentation for the preprocessor, compiler intrinsics, and supported assembly languages.

Кроме того, здесь вы найдете документацию по библиотеке времени выполнения C++ C, стандартной библиотеке и нескольким другим библиотекам, доступным в MicrosoftC++ C/Compiler (компилятором MSVC). You’ll also find documentation for the C runtime library, the C++ standard library, and several other libraries available with the Microsoft C/C++ compiler (MSVC) here.

Справочник по языку Language reference

Язык C C language
Справочные материалы по реализации Майкрософт стандартной библиотеки C. Reference content for the Microsoft implementation of the C language.

C++языке C++ language
Справочное содержимое для реализации C++ языка Майкрософт. Reference content for the Microsoft implementation of the C++ language.

C/C++ препроцессор C/C++ preprocessor
Справочное содержимое для препроцессора, используемого C и C++. Reference content for the preprocessor used by C and C++.

Встроенные функции компилятора Compiler intrinsics
Описание встроенных функций, доступных в Microsoft C и C++ для архитектур x86, ARM, ARM64 и x64. Describes intrinsic functions that are available in Microsoft C and C++ for x86, ARM, ARM64, and x64 architectures.

Встроенный ассемблер Inline assembler
Объясняет, как использовать встроенный код на ассемблере в программах Visual C/C++ для процессоров x86. Explains how to use the Visual C/C++ inline assembler with x86 processors.

Справочник по ассемблеру ARM ARM assembler reference
Справочные материалы по ассемблеру Microsoft ARM (АРМАСМ) и связанным средствам. Provides reference material for the Microsoft ARM assembler (ARMASM) and related tools.

Справочник по ассемблеру макросов (Майкрософт) Microsoft macro assembler reference
Содержит справочные материалы по ассемблеру Microsoft Macro Assembler (MASM). Provides reference material for the Microsoft Macro assembler (MASM).

Справочные материалы по библиотекам Libraries reference

Стандартные библиотеки Standard libraries

Библиотека времени выполнения C C runtime library
Ссылка на реализацию Майкрософт библиотеки времени выполнения C (CRT), которая иногда называется универсальной библиотекой CRT. The reference for the Microsoft implementation of the C runtime library (CRT), sometimes referred to as the Universal CRT.

C++Стандартная библиотека C++ standard library
Ссылка на реализацию Microsoft C++ стандартной библиотеки. The reference for the Microsoft implementation of the C++ standard library.

Библиотеки для приложений Windows Libraries for Windows applications

MFC/ATL MFC/ATL
Документация по библиотекам классов для Microsoft Foundation Classes (MFC) и библиотеки ATL. Documentation for the Microsoft Foundation Classes (MFC) and Active Template Library (ATL) class libraries.

Дополнительные библиотеки Additional libraries

C++AMP (C++ ускоренный большой параллелизм) C++ AMP (C++ Accelerated Massive Parallelism)
Классы, позволяющие использовать современные графические процессоры для программирования общего назначения. Classes that enable the use of modern graphics processors for general purpose programming.

Среда выполнения с параллелизмом Concurrency Runtime
Классы, упрощающие написание программ, использующих параллелизм данных или параллелизм задач. Classes that simplify the writing of programs that use data parallelism or task parallelism.

Модели OpenMP
Справочник по реализации API OpenMP в Майкрософт. Reference for the Microsoft implementation of the OpenMP API.

Библиотека SafeInt SafeInt library
Переносимая библиотека, которая может использоваться с КОМПИЛЯТОРОМ MSVC, GCC или Clang для предотвращения целочисленных перепотоков. A portable library that can be used with MSVC, GCC, or Clang to help prevent integer overflows.

Библиотеки доступа к данным Библиотеки для поддержки доступа к данным с помощью ATL или MFC, а также устаревших служб, таких как OLE DB и ODBC. Data Access Libraries Libraries to support data access using ATL or MFC, and legacy services such as OLE DB and ODBC.

Среда выполнения Windows (WinRT) сC++ Windows Runtime (WinRT) with C++
C++/WinRT — это совершенно стандартная современная проекция языка C++ 17 для среда выполнения Windows (WinRT) API, реализованная в виде библиотеки на основе заголовочных файлов. C++/WinRT is an entirely standard modern C++17 language projection for Windows Runtime (WinRT) APIs, implemented as a header-file-based library.

Библиотека C++ шаблонов среда выполнения Windows (WRL) Windows Runtime C++ Template Library (WRL)
Устаревшая библиотека шаблонов для среда выполнения Windows, замененная на C++/винрт. A legacy template library for the Windows Runtime, replaced by C++/WinRT.

Комментировать
0 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector