web-dev-qa-db-ja.com

CおよびC ++の標準ヘッダーファイルのリスト

CおよびC++のすべてのヘッダーファイルのリストはどこにありますか?

ライブラリを作成しているときに、 'tree.h not found '。これはCおよびC++の標準ヘッダーファイルだと思います。これにより、すべてのヘッダーファイルとその貢献を知りたいという好奇心が高まりました。

検索できる場所はありますか?

Solaris Unixで作業しています。

41
Vijay

ここで試してください: http://en.cppreference.com/w/

ただし、OSのヘッダーファイルを参照している場合もあります。これらは、MSDN(Windows)またはmanコマンド(POSIXシステム)で見つけることができます。または、別のOSを使用している場合は別のソース。

18

ヘッダー 'tree.h'はどこでも標準ではありません。


C規格

ISO/IEC 9899:1990(C89、C90)

C89の15の標準ヘッダーは次のとおりです。

<assert.h>  <limits.h>  <signal.h>  <stdlib.h>
<ctype.h>   <locale.h>  <stdarg.h>  <string.h>
<errno.h>   <math.h>    <stddef.h>  <time.h>
<float.h>   <setjmp.h>  <stdio.h>

ISO/IEC 9899:1990/AMD.1:1995

C94で導入された3つの追加ヘッダー* (修正1):

<iso646.h>  <wchar.h>  <wctype.h>

ISO/IEC 9899:1999(C99)

C99の6つの追加ヘッダーは次のとおりです。

<complex.h>  <inttypes.h>  <stdint.h>  <tgmath.h>
<fenv.h>     <stdbool.h>

ISO/IEC 9899:2011(C11)

C2011の5つの追加ヘッダー(合計29)は次のとおりです。

<stdalign.h>  <stdatomic.h>  <stdnoreturn.h>  <threads.h>  <uchar.h>

ISO/IEC 9045:2008(POSIX 2008、Single Unix Specification)

[〜#〜] posix [〜#〜] はさらに多くのヘッダー(82、すべてのC99ヘッダーを含む)を必要とすることに注意してください。以下のリストは、標準C(C99)ヘッダーを繰り返しています。もちろん、Windowsには別のヘッダーセットが必要です。

<aio.h>        <libgen.h>       <spawn.h>         <sys/time.h>
<arpa/inet.h>  <limits.h>       <stdarg.h>        <sys/times.h>
<assert.h>     <locale.h>       <stdbool.h>       <sys/types.h>
<complex.h>    <math.h>         <stddef.h>        <sys/uio.h>
<cpio.h>       <monetary.h>     <stdint.h>        <sys/un.h>
<ctype.h>      <mqueue.h>       <stdio.h>         <sys/utsname.h>
<dirent.h>     <ndbm.h>         <stdlib.h>        <sys/wait.h>
<dlfcn.h>      <net/if.h>       <string.h>        <syslog.h>
<errno.h>      <netdb.h>        <strings.h>       <tar.h>
<fcntl.h>      <netinet/in.h>   <stropts.h>       <termios.h>
<fenv.h>       <netinet/tcp.h>  <sys/ipc.h>       <tgmath.h>
<float.h>      <nl_types.h>     <sys/mman.h>      <time.h>
<fmtmsg.h>     <poll.h>         <sys/msg.h>       <trace.h>
<fnmatch.h>    <pthread.h>      <sys/resource.h>  <ulimit.h>
<ftw.h>        <pwd.h>          <sys/select.h>    <unistd.h>
<glob.h>       <regex.h>        <sys/sem.h>       <utime.h>
<grp.h>        <sched.h>        <sys/shm.h>       <utmpx.h>
<iconv.h>      <search.h>       <sys/socket.h>    <wchar.h>
<inttypes.h>   <semaphore.h>    <sys/stat.h>      <wctype.h>
<iso646.h>     <setjmp.h>       <sys/statvfs.h>   <wordexp.h>
<langinfo.h>   <signal.h>

また、X/Open Cursesには別のヘッダーセットが必要であることに注意してください。 2009年11月にリリースされたその仕様の新しいバージョン(リリース7)がありました(1996年以来の最初の更新—主な違いは、termcapと先行標準C <varargs.h>ヘッダーの公式サポートの喪失です)。

<curses.h>  <term.h>  <uncntrl.h>

Linux標準ベース

使用する必要があるかもしれない他のヘッダーがあります。たとえば、これらのリストには<getopt.h>についての言及はありませんが、GNU Getopt(たとえば、長いオプションの場合))を使用している場合、そのヘッダーが必要です。 LSB、Linux Standards Base によると、Linuxでは標準です。LSBの古いバージョンは、複数の部分でISO/IEC 23360:2006として定義されていました; 2014-09現在-21、LSBの現在のバージョンは4.1ですが、バージョン5.0はベータ版です。どのヘッダーを含めるかを定義するドキュメントのセクションがありますが、私が見たバージョンには便利なヘッダーの表がありません。 POSIXと密接に連携していますが、POSIXが定義するものを超える追加機能があります。


C++標準

ISO/IEC 14882:1998(C++ 98)

標準には、C++に固有の32のヘッダーがリストされています。

<algorithm>   <iomanip>   <list>     <ostream>    <streambuf>
<bitset>      <ios>       <locale>   <queue>      <string>
<complex>     <iosfwd>    <map>      <set>        <typeinfo>
<deque>       <iostream>  <memory>   <sstream>    <utility>
<exception>   <istream>   <new>      <stack>      <valarray>
<fstream>     <iterator>  <numeric>  <stdexcept>  <vector>
<functional>  <limits>

Cのヘッダーに対応する18のヘッダーもあります(C94に対応)。

<cassert>  <ciso646>  <csetjmp>  <cstdio>   <ctime>
<cctype>   <climits>  <csignal>  <cstdlib>  <cwchar>
<cerrno>   <clocale>  <cstdarg>  <cstring>  <cwctype>
<cfloat>   <cmath>    <cstddef>

興味深いことに、Annex D(§D.7)には、非推奨のヘッダー<strstream>がリストされています。そのヘッダーをGCC(g++)7.2.0に含めると、警告が生成されます。

/opt/gcc/v7.2.0/include/c++/7.2.0/backward/backward_warning.h:32:2:
warning: #warning This file includes at least one deprecated or antiquated
header which may be removed without further notice at a future date.
Please use a non-deprecated interface with equivalent functionality
instead. For a listing of replacement headers and interfaces, consult
the file backward_warning.h. To disable this warning use -Wno-deprecated. [-Wcpp]

ヘッダー<strstream>は、他のバージョンの標準に明示的にリストされています。

ISO/IEC 14882:2011(C++ 11)

C++ 11の53個のC++ヘッダーは次のとおりです。

<algorithm>           <initializer_list>  <numeric>           <system_error>
<array>               <iomanip>           <ostream>           <thread>
<atomic>              <ios>               <queue>             <Tuple>
<bitset>              <iosfwd>            <random>            <type_traits>
<chrono>              <iostream>          <ratio>             <typeindex>
<codecvt>             <istream>           <regex>             <typeinfo>
<complex>             <iterator>          <scoped_allocator>  <unordered_map>
<condition_variable>  <limits>            <set>               <unordered_set>
<deque>               <list>              <sstream>           <utility>
<exception>           <locale>            <stack>             <valarray>
<forward_list>        <map>               <stdexcept>         <vector>
<fstream>             <memory>            <streambuf>
<functional>          <mutex>             <string>
<future>              <new>               <strstream>

C(C11)に関連する26のヘッダーは次のとおりです。

<cassert>   <cinttypes>  <csignal>    <cstdio>   <cwchar>
<ccomplex>  <ciso646>    <cstdalign>  <cstdlib>  <cwctype>
<cctype>    <climits>    <cstdarg>    <cstring>
<cerrno>    <clocale>    <cstdbool>   <ctgmath>
<cfenv>     <cmath>      <cstddef>    <ctime>
<cfloat>    <csetjmp>    <cstdint>    <cuchar>

ISO/IEC 14882:2014(C++ 14)

ISO/IEC JTC1/SC22/WG21 サイトにあるドラフト標準N3797に基づくヘッダーの暫定リスト。データは、セクション17.6.1.2Headersの表14および15からのものであり、下記のように修正されています。標準が公開されていないため(2014-09-21現在)、このリストはまだ決定的ではありません。

C++ 14の54個のC++ヘッダーは次のとおりです。

<algorithm>           <initializer_list>  <numeric>           <strstream>
<array>               <iomanip>           <ostream>           <system_error>
<atomic>              <ios>               <queue>             <thread>
<bitset>              <iosfwd>            <random>            <Tuple>
<chrono>              <iostream>          <ratio>             <type_traits>
<codecvt>             <istream>           <regex>             <typeindex>
<complex>             <iterator>          <scoped_allocator>  <typeinfo>
<condition_variable>  <limits>            <set>               <unordered_map>
<deque>               <list>              <shared_mutex>      <unordered_set>
<exception>           <locale>            <sstream>           <utility>
<forward_list>        <map>               <stack>             <valarray>
<fstream>             <memory>            <stdexcept>         <vector>
<functional>          <mutex>             <streambuf>
<future>              <new>               <string>

C(C11)に関連する26のヘッダーは、C++ 11と比較して変更されていません。

<cassert>   <cinttypes>  <csignal>    <cstdio>   <cwchar>
<ccomplex>  <ciso646>    <cstdalign>  <cstdlib>  <cwctype>
<cctype>    <climits>    <cstdarg>    <cstring>
<cerrno>    <clocale>    <cstdbool>   <ctgmath>
<cfenv>     <cmath>      <cstddef>    <ctime>
<cfloat>    <csetjmp>    <cstdint>    <cuchar>

C++ 11と比較して、C++ 14には1つの新しいヘッダー、つまり<shared_mutex>がリストされています。

NB:ドラフトでは、いくつかのヘッダー(<deque><istream><stdexcept><unordered_set>)を2回リストします。また、C++ 11の5つのヘッダー、つまり<exception><iterator><ratio><scoped_allocator>、および<thread>がドラフトの表にリストされていません。 。 §18.8は<exception>を定義し、§24は<iterator>を定義し、§20.11は<ratio>を定義し、§30は<thread>を定義し、§30.4は<shared_mutex>を定義します。ドラフト標準を最終的なWordとして信頼すべきではない理由の例—エラーが含まれています。

ISO/IEC 14882:2017(C++ 17)

2017年3月21日付けのドラフト N4659 に基づくC++ 17のヘッダーの暫定リスト。これは、セクション20.5.1.2Headersの表16および17の転写です。これは最終的な標準ではありません。理論的には、何かが変わる可能性があります。

61個のC++ヘッダーがあります。

<algorithm>           <future>            <numeric>           <strstream>
<any>                 <initializer_list>  <optional>          <system_error>
<array>               <iomanip>           <ostream>           <thread>
<atomic>              <ios>               <queue>             <Tuple>
<bitset>              <iosfwd>            <random>            <type_traits>
<chrono>              <iostream>          <ratio>             <typeindex>
<codecvt>             <istream>           <regex>             <typeinfo>
<complex>             <iterator>          <scoped_allocator>  <unordered_map>
<condition_variable>  <limits>            <set>               <unordered_set>
<deque>               <list>              <shared_mutex>      <utility>
<exception>           <locale>            <sstream>           <valarray>
<execution>           <map>               <stack>             <variant>
<filesystem>          <memory>            <stdexcept>         <vector>
<forward_list>        <memory_resource>   <streambuf>
<fstream>             <mutex>             <string>
<functional>          <new>               <string_view>

C++ 14と比較した新しいヘッダーは、<any><execution><filesystem><memory_resource><optional><string_view><variant>

繰り返しますが、C(C11)に関連する26のヘッダーは、C++ 11およびC++ 14と比較して変更されていません。

<cassert>   <cinttypes>  <csignal>    <cstdio>   <cwchar>
<ccomplex>  <ciso646>    <cstdalign>  <cstdlib>  <cwctype>
<cctype>    <climits>    <cstdarg>    <cstring>
<cerrno>    <clocale>    <cstdbool>   <ctgmath>
<cfenv>     <cmath>      <cstddef>    <ctime>
<cfloat>    <csetjmp>    <cstdint>    <cuchar>

参照 C++ 17の新機能は何ですか?

一部の「Cライブラリ」ヘッダーは、C++ 17では 非推奨 、特に<ccomplex><cstdalign><cstdbool><ctgmath><ciso646>ではありません)。 C++ヘッダー<codecvt>(C++ 11で追加)もC++ 17で非推奨になりました。


* 日付の「1年ずれている」問題は、承認後の標準の処理にかかる時間によるものです。 ANSIは、 1989 で元のC標準を承認しました。 ISOは1990年に承認しました。修正1は1994年に承認されました。 1995年にリリースされました。

113

http://www.cplusplus.com/reference/ は、すべての標準C++ヘッダーとCヘッダーファイルのC++ラッパーをリストします。

tree.hは標準ライブラリの一部ではありません。

8
Adam Bowen

私はこれを見つけました C標準ライブラリのウィキペディアエントリ が含まれ、Cヘッダーファイルのリストとwhich標準の詳細情報の一部です。それはあなたに素敵な歴史的視点といくつかの他の同様の詳細を提供します。

もちろん、それは単なるCです。「C++標準ライブラリ」の下に同様の記事があります。また、それ自体は「標準」ではないかもしれない他のライブラリへの参照もありますが、これがないと、C++は拡張機能の操作に慣れている一部の人々に「不自由」を感じます。

6
Carl Smotricz