標準ライブラリ(glibc)には、sys/mman.h
に__mmap
のような先頭の二重下線で定義された関数があります。目的は何ですか?そして、どこでも宣言されていないと思われる関数mmap
をどう呼び出すことができますか?つまり、sys/mman.h
が含まれていますが、sys/mman.h
はmmap
と宣言されておらず、__mmap
と宣言しています。 GNUのマニュアルから最初の二重アンダースコアの意味
答えて
:このマニュアルに記載名に加えて
、 は、アンダースコア(「_」)で始まることを、すべての外部識別子(グローバル関数や変数)が含ま 予約名とすべての2つのアンダースコアまたはアンダースコアの後に 大文字を続けて使用する に関係なく、識別子は予約名です。これは、ライブラリーと ヘッダーファイルが、ユーザープログラム内の名前と競合することなく、内部で の目的のために関数、変数、およびマクロを定義できるようにするためです。
これは、CおよびC++ベンダーでも使用されている規則です。
先頭に二重のアンダースコアが付いた名前は、実装(コンパイラ/標準ライブラリ/ etc)によって内部的に使用されるために予約されています。それらは決してあなたのコードに表示されるべきではありません。この予約された名前空間の目的は、プログラムで使用されている名前と潜在的に衝突することなく使用できるシステムヘッダー名を与えることです。 ISO 9899
私は親切なあなたの答えが好きです。 –
:2011
7.1.3予約識別子
各ヘッダーが宣言またはその 関連箇条に記載されているすべての識別子を定義し、必要に応じて宣言またはそれに関連する将来のライブラリにリストされた識別子 を定義指示副節および 識別子は、常に使用のために、またはファイルスコープ識別子 として使用するために予約されています。
- アンダースコアと大文字のいずれか、または別のアンダースコアで始まるすべての識別子は常に使用するために予約 です。
- アンダースコアで始まるすべての識別子は、通常の名前空間とタグ名空間の両方でファイルスコープ の識別子として使用するために予約されています。
- 1. アンダースコアの意味
- 2. DBPedia:URIの '__1'(二重のアンダースコア)の意味は何ですか? DBpediaのオン
- 3. 半二重シリアル接続の意味は?
- 4. Python:二重アンダースコアのクラス
- 5. WaitCallbackのアンダースコアの意味
- 6. このアンダースコアの意味は?
- 7. Groovyのアンダースコアの意味
- 8. Pythonメソッドの二重アンダースコア*引数*
- 9. ノードjsでのアンダースコアの意味
- 10. アンダースコアの文字列JavaScriptの意味
- 11. Perlの 'at'(@@)の二重の意味は何ですか?
- 12. couchbaseの二重コロンの意味は何ですか?
- 13. bashでの二重角括弧の意味
- 14. JavaScriptの二重スラッシュは何を意味しますか?
- 15. ハスケルでは二重バックスラッシュは何を意味しますか?
- 16. ファイルパスに二重スラッシュは何を意味しますか?
- 17. リンク先でNODEの最初の=最初のリンクの意味は何ですか?
- 18. 「最初のペイントまでの時間」「最初の意味的なペイント」
- 19. Perl:文字列の後の二重角括弧の意味ですか?
- 20. __mro__と他の二重アンダースコアの名前との違いは?
- 21. (Java)二重リンクリスト、最初の発生の削除。
- 22. WPF:RoutedUICommand()の最初の2つの "同じ"引数の意味
- 23. LC3の最初の行(16ビット)のORIGの意味
- 24. VB.netで_のアンダースコアの変数プレフィックスとしての意味
- 25. objdump出力の最初の列の意味は何ですか?
- 26. Elixirの関数パラメータで二重バックスラッシュは何を意味しますか?
- 27. XML要素属性の二重ハッシュ `## 'はどういう意味ですか?
- 28. リテラルの数字のアンダースコアはどういう意味ですか?
- 29. dummy_argvの最初の要素はperl_parseを意味しますか?
- 30. _servicename_のアンダースコアはAngularJSテストで何を意味しますか?
ダブルアンダースコア:http://stackoverflow.com/questions/224397/why-do-people-use-double-underscore-so-much-in-c(質問はC++は述べていますが、 '__'ですANSI C標準からも同様です)。私の 'sys/mman.h'のバージョンでも、' mmap'が定義されています。 – birryree
'__mmap'はglibcによってどこでも宣言されていません。あなたが何を言っているのかは分かりません。 –
glibcヘッダーではなく、カーネルヘッダーを調べていますか? –