関数の引数とは? わかりやすく解説

関数の引数

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/03/16 13:58 UTC 版)

マスク (情報工学)」の記事における「関数の引数」の解説

C言語のようなプログラミング言語では、ビットマスク関数ブーリアン型引数一連の前付きの値として渡すのに使える例えば、グラフィックスAPIであるOpenGLには、glClear() というコマンドがある。これは画面や他のバッファクリアするもので、4つバッファcolordepthaccumulationstencil)をクリアできるので、これらを指定するのにブーリアン型引数4つ使ったAPI考えられる。すると、その呼び出し次のうになる。 glClear(1,1,0,0); // 実際の glClear とは異なる。 これでは可読性低く何をしたいのかわかりにくい。そこで実際に特定ビット位置オンにしたビットマスクに GL_COLOR_BUFFER_BIT、GL_DEPTH_BUFFER_BIT、GL_ACCUM_BUFFER_BIT、GL_STENCIL_BUFFER_BIT と名前を付け、glClear()次のように宣言している。 void glClear(GLbitfield bits); すると、この関数呼び出し次のうになる。 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); このような引数を持つ関数内部では、個々ビット取出すのに AND 演算行っている。例えば、glClear()実装次のうになるvoid glClear(GLbitfield bits) { if (bits & GL_COLOR_BUFFER_BIT) { // color バッファクリア } if (bits & GL_DEPTH_BUFFER_BIT) { // depth バッファクリア } if (bits & GL_ACCUM_BUFFER_BIT) { // accumulation バッファクリア } if (bits & GL_STENCIL_BUFFER_BIT) { // stencil バッファクリア }} この手法の利点は、引数個数削減することでオーバーヘッド削減できる点である。データとして受け渡しできる最小単位1バイトなので、それぞれの操作を別々の引数受け渡すと、引数当たり7ビットが無駄となり、余分なスタック領域占有することになる。実際に引数32ビット整数であることが多くその場合は32個のオプション1つ引数指定できる。しかし、この手法を単純に実装すると型安全ではなくなる。GLbitfield は単純に unsigned int定義されているので、コンパイラは glClear(42) や glClear(GL_POINTS) といった無意味な呼び出しがあってもエラー検出できないC++では、glClear が受け取引数群をクラスとしてカプセル化でき、型安全性保証できる外部リンク参照)。

※この「関数の引数」の解説は、「マスク (情報工学)」の解説の一部です。
「関数の引数」を含む「マスク (情報工学)」の記事については、「マスク (情報工学)」の概要を参照ください。

ウィキペディア小見出し辞書の「関数の引数」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「関数の引数」の関連用語

関数の引数のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



関数の引数のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのマスク (情報工学) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS