C ディレクティブ 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(#define/#undefine)
(#include)
 
1行: 1行:
 +
[[C PlusPlus#Cにもあった技術|C++]]へ戻る
 +
 +
 
※このページではC言語にも存在していたという意味で記事タイトルがC ディレクティブになっていますが、<br />
 
※このページではC言語にも存在していたという意味で記事タイトルがC ディレクティブになっていますが、<br />
 
[[C PlusPlus|C++]]でも同様です。[[C PlusPlus|C++]]だけの機能がある場合は明記します。<br />
 
[[C PlusPlus|C++]]でも同様です。[[C PlusPlus|C++]]だけの機能がある場合は明記します。<br />
 
<br />
 
<br />
== '''ディレクティブ''' ==
+
<big><big>'''ディレクティブ'''</big></big>
 +
 
 +
 
 
ディレクティブとは日本語で指示するという意味でDirectiveは映画やドラマのDirectorでも同じような意味で制作指揮者・監督というような意味で使われます。プリプロセスを指示するための命令文がディレクティブであることについては[[C プリプロセッサ]]の項目で記述しました。
 
ディレクティブとは日本語で指示するという意味でDirectiveは映画やドラマのDirectorでも同じような意味で制作指揮者・監督というような意味で使われます。プリプロセスを指示するための命令文がディレクティブであることについては[[C プリプロセッサ]]の項目で記述しました。
  
35行: 40行:
 
*<nowiki>#</nowiki>pragma
 
*<nowiki>#</nowiki>pragma
 
:詳細は[[C プラグマ]]に記述
 
:詳細は[[C プラグマ]]に記述
 +
 +
  
 
== '''<nowiki>#</nowiki>include''' ==
 
== '''<nowiki>#</nowiki>include''' ==
 +
 
<nowiki>#</nowiki>includeディレクティブでは、インクルードファイルを検索して読み込む処理を記述します。以下のような2とおりの記述ができます。
 
<nowiki>#</nowiki>includeディレクティブでは、インクルードファイルを検索して読み込む処理を記述します。以下のような2とおりの記述ができます。
  
48行: 56行:
  
 
具体的には以下の優先順序になる。
 
具体的には以下の優先順序になる。
 +
 +
 +
  
  
62行: 73行:
  
  
incluedeファイルの入れ子は10レベルまでとなっているので、あまり階層(呼び出しの呼び出しの呼び出し…のような感じ)が深くならないようにディレクティブによるヘッダの呼び出しをするように組み込みましょう。絶対パスを指定した場合はその他のディレクトリは検索しないことになっていますので、次々と検索されるのを防ぐ必要がある場合には絶対パスが利用できます。但し、絶対パスにした場合、第三者にプログラムを再利用してもらう場合の配慮が必要になりますので、用途に応じた対応が必要になります。あえて絶対パスにして、自分以外のPCでは簡単にコンパイルされないようにする嫌がらせも可能です。原因がわからない人には使えないという試練を与えるドラマでいうところのなんだその変な胡散臭い試練はって奴になります。
+
 よく使われていたインクルードの宣言は#include <stdio.h>で、C++11という標準規格が制定された2011年くらいまでは、この方法でした。C++11以降はstdioに変わる新しいヘッダファイルcstdioに置き換わっています。VisualStudio2012あたりからcstdioが使われ始めています。他にも主要なヘッダファイルは先頭にcがついて、後ろの.hがないヘッダファイルに置き換わっています。VisualStudio2019ではC++20までの標準規格規格に対応しつつあり、メニュー{デバッグ}&gt;{(プロジェクト名)のデバッグ}で表示されるダイアログの左側ツリーから全般を選択したときに表示される{言語の標準規格の設定}でどの規格を使うかが設定できます。既定ではC++14になっています。C++14の設定でもC++17やC++20の一部の機能は使えます。つまり、VS2019ではもうとっくにC++11準拠なので、cstdioを使った方が良いという感じです。他のコンパイラでもそろそろ、cstdioが対応されていると思います。
 +
 
 +
 
 +
標準ヘッダファイルが新しくなったモノ一覧
 +
*<cassert>
 +
*<ccomplex>
 +
*<cctype>
 +
*<cerrno>
 +
*<cfenv>
 +
*<cfloat>
 +
*<cinttypes>
 +
*<ciso646>
 +
*<climits>
 +
*<clocale>
 +
*<cmath>
 +
*<csetjmp>
 +
*<csignal>
 +
*<cstdalign>
 +
*<cstdarg>
 +
*<cstdbool>
 +
*<cstddef>
 +
*<cstdint>
 +
*<'''cstdio'''>
 +
*<cstdlib>
 +
*<cstring>
 +
*<ctgmath>
 +
*<ctime>
 +
*<cuchar>
 +
*<cwchar>
 +
*<cwctype>
 +
 
 +
 
 +
 incluedeファイルの入れ子は10レベルまでとなっているので、あまり階層(呼び出しの呼び出しの呼び出し…のような感じ)が深くならないようにディレクティブによるヘッダの呼び出しをするように組み込みましょう。絶対パスを指定した場合はその他のディレクトリは検索しないことになっていますので、次々と検索されるのを防ぐ必要がある場合には絶対パスが利用できます。但し、絶対パスにした場合、第三者にプログラムを再利用してもらう場合の配慮が必要になりますので、用途に応じた対応が必要になります。あえて絶対パスにして、自分以外のPCでは簡単にコンパイルされないようにする嫌がらせも可能です。原因がわからない人には使えないという試練を与えるドラマでいうところのなんだその変な胡散臭い試練はって奴になります。
  
  
69行: 112行:
  
 
インクルードファイル名が重複する場合には、このあたりの優先度を理解してインクルードパスの指定をきっちりとしてやることが大事になってきます。
 
インクルードファイル名が重複する場合には、このあたりの優先度を理解してインクルードパスの指定をきっちりとしてやることが大事になってきます。
 
  
 
=='''<nowiki>#</nowiki>using'''==
 
=='''<nowiki>#</nowiki>using'''==
240行: 282行:
  
  
=='''<nowiki>#</nowiki>define/<nowiki>#</nowiki>undefine'''==
+
=='''<nowiki>#</nowiki>define/<nowiki>#</nowiki>undef'''==
 
*[[C マクロ##define|#define]]
 
*[[C マクロ##define|#define]]
*[[C マクロ##undefine|#undefine]]
+
*[[C マクロ##undef|#undef]]
  
 
詳細な説明は上記の個別記事の項目を参照して下さい。
 
詳細な説明は上記の個別記事の項目を参照して下さい。
 
  
 
=='''<nowiki>#</nowiki>pragma'''==
 
=='''<nowiki>#</nowiki>pragma'''==
251行: 292行:
  
 
詳細な説明は上記の個別記事の項目を参照して下さい。
 
詳細な説明は上記の個別記事の項目を参照して下さい。
 +
 +
 +
[[C PlusPlus#Cにもあった技術|C++]]へ戻る

2020年7月15日 (水) 00:00時点における最新版



個人用ツール
名前空間

変種
操作
案内
ツールボックス