C ディレクティブのソースを表示
新しいページはコチラ
移動:
案内
,
検索
※このページではC言語にも存在していたという意味で記事タイトルがC ディレクティブになっていますが、<br /> [[C PlusPlus|C++]]でも同様です。[[C PlusPlus|C++]]だけの機能がある場合は明記します。<br /> <br /> == '''ディレクティブ''' == ディレクティブとは日本語で指示するという意味でDirectiveは映画やドラマのDirectorでも同じような意味で制作指揮者・監督というような意味で使われます。プリプロセスを指示するための命令文がディレクティブであることについては[[C プリプロセッサ]]の項目で記述しました。 ディレクティブは主に#記号からはじまる命令文で記述され、プログラムのどこの部分でも利用されることもありますが、基本的にはプログラムコードを記述したテキストの先頭に集中して記載されることが多いです。プログラムの途中でよく使われるディレクティブも存在します。 では、どういったディレクティブがあるのかを、以下に一覧します。既によく知っているものから、あまり使わないものまであるかもしれませんが、必要な範囲で必要なだけここにそれぞれのディレクティブの意味や使い方を記述します。 *<nowiki>#</nowiki>include *<nowiki>#</nowiki>using *<nowiki>#</nowiki>import *<nowiki>#</nowiki>line *<nowiki>#</nowiki>error *<nowiki>#</nowiki>if *<nowiki>#</nowiki>elif *<nowiki>#</nowiki>else *<nowiki>#</nowiki>endif *<nowiki>#</nowiki>ifdef *<nowiki>#</nowiki>ifndef *<nowiki>#</nowiki>define *<nowiki>#</nowiki>undef :詳細は[[C マクロ]]に記述 *<nowiki>#</nowiki>pragma :詳細は[[C プラグマ]]に記述 == '''<nowiki>#</nowiki>include''' == <nowiki>#</nowiki>includeディレクティブでは、インクルードファイルを検索して読み込む処理を記述します。以下のような2とおりの記述ができます。 '''<nowiki>#</nowiki>include ”(パス\)インクルードファイル名”''' '''<nowiki>#</nowiki>include <nowiki><</nowiki>(パス\)インクルードファイル名<nowiki>></nowiki>''' " "2重引用符と<nowiki><</nowiki> <nowiki>></nowiki>山カッコ(小なり 大なり)の2とおりのファイルパス記述が#includeの命令の後ろに空白を挟んで記述することで指定できますが、それぞれはディレクトリの検索順序が異なります。" "2重引用符はプロジェクト固有のインクルードファイルを指定し、<nowiki><</nowiki> <nowiki>></nowiki>山カッコは標準関数やSDKなどの開発環境設定を優先するようなインクルードファイルを指定するために利用されます。 具体的には以下の優先順序になる。 '''” ”2重引用符''' :#<nowiki>#</nowiki>includeディレクティブが記述されたファイルの置かれているディレクトリ内、相対パスがある場合はファイルの置かれているディレクトリからの相対パス内。相対パスに関する扱いは以降も同じなので省略。 :#<nowiki>#</nowiki>includeディレクティブによって最後に開かれたファイルが優先されて使われ、ディレクトリの検索は読み込みをしたファイルが置かれている親ディレクトリ。なければ更に読み込みをしたファイルが更に#includeディレクティブによって読み込まれていたなら、読み込みをした親ディレクトリ(親の親)と遡っていく。 :#/I コンパイルオプションで指定されているディレクトリ :#環境変数INCLUDEで指定されたディレクトリ '''<nowiki><</nowiki> <nowiki>></nowiki>山カッコ''' :#/I コンパイルオプションで指定されているディレクトリ :#環境変数INCLUDEで指定されたディレクトリ incluedeファイルの入れ子は10レベルまでとなっているので、あまり階層(呼び出しの呼び出しの呼び出し…のような感じ)が深くならないようにディレクティブによるヘッダの呼び出しをするように組み込みましょう。絶対パスを指定した場合はその他のディレクトリは検索しないことになっていますので、次々と検索されるのを防ぐ必要がある場合には絶対パスが利用できます。但し、絶対パスにした場合、第三者にプログラムを再利用してもらう場合の配慮が必要になりますので、用途に応じた対応が必要になります。あえて絶対パスにして、自分以外のPCでは簡単にコンパイルされないようにする嫌がらせも可能です。原因がわからない人には使えないという試練を与えるドラマでいうところのなんだその変な胡散臭い試練はって奴になります。 マイクロソフト固有の処理としては、環境変数や/I オプションには;区切りで複数のパスを指定できるが、先頭に記述されているパスが優先されるというものです。 インクルードファイル名が重複する場合には、このあたりの優先度を理解してインクルードパスの指定をきっちりとしてやることが大事になってきます。 =='''<nowiki>#</nowiki>using'''== C++/CLIで使われる共通言語基盤のライブラリを読み込む場合に利用するものですので、説明を省略します。C++/CLIの項目で解説するかもしれません。 =='''<nowiki>#</nowiki>import'''== =='''<nowiki>#</nowiki>line'''== =='''<nowiki>#</nowiki>error'''== =='''<nowiki>#</nowiki>if/<nowiki>#</nowiki>elif/<nowiki>#</nowiki>else/<nowiki>#</nowiki>endif'''== =='''<nowiki>#</nowiki>ifdef/<nowiki>#</nowiki>ifndef'''==
C ディレクティブ
に戻る。
個人用ツール
18.119.172.243
このIPアドレスのトーク
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ