

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
pragmaとは何か?
プログラミングの世界には pragma という「指示」を表す言葉があります。pragma は「コンパイラや実行環境に対して、通常のコードの処理とは別の挙動を指示するための特別な命令」です。日本語では“プリマグラ”と読むこともありますが、実際は英語の Pragma の略語として使われます。この指示は通常のプログラムの実行結果には直接影響を与えないことが多く、コンパイラやデータベースエンジン、あるいはビルドツールなどのツール側の動作を変えるために使われます。
C/C++ の pragma の使い方
C/C++ などの言語では、プリプロセッサの段階で #pragma の後に指示が続きます。代表的な例として #pragma once、#pragma pack などがあります。#pragma once はヘッダファイルが複数回読み込まれるのを防ぐ働きをします。これにより、ヘッダの重複定義を避けることができます。ただし #pragma の仕様はコンパイラごとに異なることがあり、すべての環境で同じ動作になるとは限りません。必ず自分の使っているコンパイラのマニュアルを確認しましょう。
SQLite の PRAGMA の使い方
データベースエンジンの SQLite には PRAGMA という命令があります。これはデータベースやテーブルの設定を取得したり変更したりする“設定コマンド”です。例として PRAGMA foreign_keys; は外部キーの有効状態を確認します。PRAGMA foreign_keys = ON; と書くと、 externalキー制約を有効にすることができます。別の例として PRAGMA journal_mode=WAL; はジャーナルモードを設定し、書き込みの挙動を変えます。これらはデータベースの動作を微調整する便利な機能です。
pragma の使い分けのコツ
プリプロセッサの pragma とデータベースの PRAGMA は別物です。使い分けのコツは「どのツールに対して指示を出しているか」を意識することです。コードの可読性を損なわないように、公式ドキュメントを参照して、必要な場面だけに絞って使いましょう。特にチーム開発では、他の人が理解できる命名やコメントを併記することが重要です。
表で見る pragma の違い
| 例 | 目的 | |
|---|---|---|
| C/C++ | <span>#pragma once | ヘッダの多重読み込み防止 |
| C/C++ | #pragma pack | データ構造のアラインメント調整 |
| SQLite | PRAGMA foreign_keys | 外部キーの有効化/確認 |
| SQLite | PRAGMA journal_mode | ジャーナルモードを設定 |
まとめ
pragma は「ツールに対して特別な動作を指示するための合図」です。具体的な書き方や使える指示は、言語やツールごとに異なります。公式ドキュメントを読んで、使い方を正しく理解することが大切です。間違った使い方をすると、プログラムの挙動が予想外になったり、データが壊れたりすることもあります。初心者のうちは、まず基本的な例だけを覚え、実務では信頼できる資料を参照する癖をつけましょう。
pragmaの関連サジェスト解説
- pragma no-cache とは
- pragma no-cache とは、ウェブの通信で使われるヘッダのひとつです。英語名は Pragma ヘッダで、値に no-cache を指定します。主な意味は「このリソースは cache に保存せず、都度サーバーから新しいデータを取得してほしい」という指示です。昔の HTTP/1.0 で生まれた仕組みで、現在は補助的な役割として使われることが多く、最新の標準では Cache-Control ヘッダを使うことが推奨されています。Pragma: no-cache は、主に古い環境との互換性を保つための手段です。現代のブラウザやCDN、プロキシの多くは Cache-Control の指示を最も重視します。そのため、Pragma の指示だけでは十分な保証にならないことがあります。実際の影響としては、Web ページをリクエストするたびにサーバーへアクセスし直す動作になります。これは動的なページや頻繁に更新されるニュースなどの場面で有用ですが、反対にページ表示が遅くなる原因にもなり得ます。現代的な対策としては、キャッシュを完全に禁止したい場合は Cache-Control: no-store, no-cache, must-revalidate の指定と Expires: 0 をセットします。これらは中間キャッシュにも適用されやすく、最新の内容を確実に表示したい場合に有効です。使い方の例としては、サーバー側の言語で次のように設定します。PHP なら header('Pragma: no-cache'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Expires: 0'); 同じ考え方は他の言語でも適用できます。注意点として、過度に cache を壊すとサイトの表示速度が落ちることがあります。特に静的ファイルを毎回再取得するのは無駄な通信となり得るため、適切なキャッシュ戦略を選ぶことが重要です。結論として、pragma no-cache とは古い時代の名残を含む指示で、現代は Cache-Control 系列を優先して使うべきです。互換性のために Pragma を残すことはあるものの、確実性を求めるなら Cache-Control と Expires を併用し、状況に応じて使い分けましょう。
- pragma pack とは
- pragma pack とは、C/C++ などのプログラミングで使われる指示の一つです。プログラムをコンパイルするとき、構造体やクラスのメンバーは通常、メモリ上で一定の間隔で並ぶように配置されます。これをアライメントと呼び、パディングという空きスペースが入ることがあります。その結果、構造体全体のサイズが大きくなることもあります。pragma pack は、そのアライメントのルールを“変える”ための命令です。つまり、構造体の中のデータをより詰めて並べる(または、指定した形で並べる)ことをコンパイラに指示します。使い方の基本は push, 1 の形です。代表的な使い方は次のようなコードです。#pragma pack(push, 1)struct Item { char c; int i;};#pragma pack(pop)この例では、構造体 Item のメンバーを 1 バイト単位で揃えるよう指定しています。これにより、通常は 5 バイト程度になることが多いですが、実際のサイズはプラットフォームやコンパイラ依存です。どんな場面で使うか:- 外部データとの互換性が必要なとき(バイナリファイル、ネットワークプロトコル)- メモリ使用量を小さく抑えたいとき- 既存のフォーマットに合わせるとき注意点として、ポータビリティが低下することがあります。多くのプラットフォームで異なるアライメントが走ること、未定義動作につながること、また最適化されたアクセスが遅くなる場合があることを覚えておきましょう。可能なら、データをバイト列へ明示的にシリアライズする方法を優先し、pack は本当に必要なときだけ使うのが安全です。まとめとして、pragma pack とは、構造体のメモリ配置を制御するコンパイラ指示で、データを詰めて並べることでメモリ使用量を抑えたり、外部データとの互換性を作るのに役立ちます。push と pop を使って元の設定を保存/復元しますが、プラットフォームやコンパイラに依存する点が多く、ポータビリティを損なう可能性があります。適切な場面で慎重に使い、必要がなければ標準的な並びを優先し、もしバイナリデータの読み書きがある場合のみ具体的なフォーマットに合わせて使うと良いでしょう。
- pragma autonomous_transaction とは
- pragma autonomous transaction とは、OracleのPL/SQLで使われる『プリグマ』という命令の一つです。プリグマはコンパイラや実行時に特別な指示を伝える仕組み。autonomous_transactionは“自律した”トランザクションを作る宣言で、通常の処理とは別の取引として動きます。具体的には、ある手続きを実行している途中で、別の取引を開始して独立してコミットやロールバックができます。例えば、主な処理がうまくいかなかったとしても、監査ログやエラーログを独立した取引として保存できるのです。これにより、肝心のメインの処理の整合性を保ちつつ、ログだけは確実に残すことが可能になります。使い方の基本は、ログを残すような処理を含む手続きを作成し、手続きの定義の頭に PRAGMA AUTONOMOUS_TRANSACTION; を置くことです。その後、挿入や更新を行い、必要に応じて COMMIT を呼び出します。メインのトランザクションが後でロールバックしても、 autonomous transaction で行った変更は別の取引としてすでに確定されているため、ログが消えることはありません。ただし注意点もあります。 autonomous transaction はメインのトランザクションとは別の文脈で動くため、整合性の管理が難しくなる場合があります。過度な使用は避け、特に SQL 文の中から呼び出される関数や、排他制御が重要な場面では慎重に使うべきです。実際の運用では、成功した処理だけをログに記録するのではなく、失敗時の情報を確実に残す用途が多いです。コード例としては、以下のように記述します。CREATE OR REPLACE PROCEDURE log_error(p_message IN VARCHAR2) IS PRAGMA AUTONOMOUS_TRANSACTION;BEGIN INSERT INTO error_log (log_date, message) VALUES (SYSTIMESTAMP, p_message); COMMIT;END log_error;その後、メインの処理から log_error を呼び出して、エラー時の記録を独立した取引として保存するのが典型的な使い方です。
- sqlite pragma とは
- この記事では sqlite pragma とは何かをやさしく解説します。PRAGMA は SQLite が内部設定を確認・変更する特別な命令で、通常のデータ操作とは異なり、データの追加や検索ではなく、データベースの動作や環境を設定します。実行すると現在の設定を返すこともあれば、設定を新しい値に変えることもあります。例えば、PRAGMA foreign_keys; で外部キーの機能を現在の接続で有効かどうかを確認したり、PRAGMA foreign_keys = ON; で有効にしたりします。SQLite はセッションごとに設定を覚えることが多いので、アプリを再起動すると再び設定がデフォルトに戻ることもあります。他にも PRAGMA journal_mode = WAL; は書き込み時の処理を WAL というモードに変更して高速化とトランザクションの安定性を向上させます。PRAGMA synchronous = NORMAL; はデータの書き込みの安全性と速度のバランスを変えます。PRAGMA page_size; は現在のページサイズを教えてくれ、必要に応じて大きくすることで大規模データのパフォーマンスを改善できます。PRAGMA user_version; はデータベースファイルに自分用のバージョン番号を使う方法で、アプリのアップデート管理などに役立ちます。使い方のコツとして、必ず接続ごとに設定を確認・必要に応じて元に戻すこと、変更は安易に行わず、バックアップをとってから試すこと、移行時にはスキーマと PRAGMA の取り扱いを合わせて考えることが挙げられます。注意点として、PRAGMA の一部は同じファイル内の別の接続には影響しない、またはデータベースファイルをコピーすると設定が引き継がれないことがあります。具体的な値や挙動は SQLite のバージョンにより異なるため、公式ドキュメントを参照すると安心です。
- c++ pragma とは
- c++ では #pragma という特別な指示があり、これを使うとコンパイラに対して何か特別な処理を依頼できます。#pragma は“pragma”と呼ばれるプリプロセッサ指令の一種で、標準C++には定義されていません。つまり、ある機能はコンパイラ依存で、コンパイラごとに解釈の仕方が変わる点に注意が必要です。多くのコードで portable にするなら #pragma に頼りすぎず、標準機能やマクロ・静的な方法を使うのが安全です。代表的な使い方には次のようなものがあります。まず #pragma once はヘッダファイルの二重読み込みを防ぐもので、従来の include guard より簡単に使えます。ファイルの最初に書くだけで、同じファイルが複数回読み込まれるのを防ぎます。次に #pragma pack という命令で構造体のメンバの配置を詰めることができます。push と pop を組み合わせると、他の箇所のパック設定を壊さずに一時的に変更できます。データのバイナリ互換性が必要な場面で使いますが、パフォーマンスやアラインメントの関係で予期せぬ動作になることもあるので注意が必要です。警告の制御も #pragma で行えます。MSVC では #pragma warning(disable: コード番号) として特定の警告を抑制できます。GCC や Clang では #pragma GCC diagnostic push はい、診断を一時的に変更する方法です。IDE によっては #pragma region / #pragma endregion のようなコード折りたたみのための指示もありますが、これは標準機能ではなくIDEの機能です。最後にパフォーマンス関連の指示として #pragma optimize が使える場合もありますが、コンパイラ依存であり古い環境ではサポートされていないことが多い点に注意しましょう。使うときのコツとしては、まず“必要なときだけ”使うこと、そして複数のコンパイラで動くコードは条件付きで書くことです。例えば #if defined(_MSC_VER) などで MSVC 専用の指示と、それ以外のコンパイラ用の指示を分けて記述します。最後に、#pragma に頼りすぎず、標準機能とドキュメントを確認して安全に活用することが大切です。
- #pragma once とは
- 結論から言うと、#pragma once とはヘッダファイルを“一度だけ”読み込むための指示です。CやC++では、複数のファイルが同じヘッダを読むことがあり、同じ内容を二回読み込むとエラーになったり無駄に大きなコードが作られたりします。これを防ぐのがヘッダガードと呼ばれる仕組みです。#pragma once はこの考えをよりシンプルに表す特別な命令で、ヘッダファイルの冒頭に書くだけで「このファイルを一度だけ読み込む」という約束をコンパイラに伝えます。実際の動きは、コンパイラがそのファイルを見た履歴を記憶し、同じファイルが再度読み込まれそうになっても中身をスキップするというものです。従来の方法としては、以下のような include guard があります:#ifndef MY_HEADER_H#define MY_HEADER_H// ヘッダの中身#endifこの方法は自分でマクロ名を決める必要があり、同じ名前を使ってしまうと衝突します。ファイルを移動したり名前を変更した場合にも、動作が崩れる危険があります。それに比べて #pragma once はファイルのパスや実体に基づいて一度だけ読み込むように機能するため、同じファイルを別の場所から読み込んでも衝突が起きにくいという利点があります。現代のほとんどの主要コンパイラ(GCC、Clang、MSVC など)はこの指示を広くサポートしていますが、標準規格には含まれていない点に注意してください。極端なビルド設定や古い環境では動かない可能性もあります。実務的にはヘッダファイルの先頭に一行だけ#pragma onceと書くのが最も簡単です。もし互換性を最優先したい場合は従来の include guards を使い続け、必要に応じて両方を併用する方法もあります。実用のコツとしては、ヘッダファイルを一つの機能に集中させ、依存関係を増やしすぎないことです。
- #pragma comment とは
- プログラミングで #pragma という命令があり、その中の #pragma comment は特定のコンパイラにだけ効く指示です。主に Microsoft Visual C++(MSVC)で使われる機能で、リンク時にどのライブラリを使うかを教えるために使われます。これは標準の C/C++ には含まれておらず、他のコンパイラ(GCC や Clang)では無視されます。つまり、それを使えるのは Windows 系の開発環境が多い MSVC に限られるということです。使い方の基本は #pragma comment(lib, "library.lib") です。これをソースコードに書くと、そのライブラリをリンクするようにコンパイラに伝えられ、別途プロジェクト設定でリンク先を追加しなくても動くことが多くなります。例えば Windows の API を呼ぶプログラムで user32.lib を使う場合、 #pragma comment(lib, "user32.lib") と書くだけでリンク対象に自動的に追加されます。他にも #pragma comment(linker, "オプション") の形があり、これでリンカに対して特定のオプションを渡せます。たとえば #pragma comment(linker, "/DEFAULTLIB:ライブラリ.lib") のように書くと、デフォルトで特定のライブラリを使うよう指定できます。簡単な例として #pragma comment(lib, "ws2_32.lib") でソケット関連の機能を使う場合などが挙げられます。注意点として、これは MSVC 専用の機能なので他の環境へ移すと壊れることがあります。ポータブルなコードを目指す場合はこの pragma を使わず、ビルド設定でリンクを行う方法を選ぶのが安全です。使い方のコツは、特定のライブラリを毎回忘れずリンクしたい時や、わかりやすくソース内で依存関係を示したい時に有効だという点です。実際の現場では、プロジェクトの規模やビルドシステムによって、これに頼りすぎず、適切に管理するのが大事です。まとめとして、#pragma comment とは MSVC 系のコンパイラでだけ使える、リンク時にライブラリを自動的に追加する指示です。基本は #pragma comment(lib, "ライブラリ名.lib") で、必要に応じて linker オプションを渡す形が一般的です。
- #pragma interrupt とは
- #pragma interrupt とは コンパイラに対して特定の関数を割り込み処理の関数として扱う指示を出すものです。C言語の標準には割り込み処理の仕組みは含まれていませんが、組み込み機器を動かす場面では割り込みが重要になります。割り込みは外部からの信号が発生したときに現在の処理を一旦中断して、すぐにその信号に対応する処理を行い、終了後に元の処理を再開します。ISR(Interrupt Service Routine)と呼ばれる関数がその役割を担い、できるだけ短く安全に動くよう設計することが基本です。#pragma interrupt はこの ISR の書き方をコンパイラに伝える合図であり、実際の挙動は使っているコンパイラによって異なります。場合によっては ISR が使うレジスタの保存方法や呼び出しの順番、割り込み時の復帰方法などを自動で設定してくれることがあります。
- #pragma region とは
- この記事では #pragma region とは 何か、何のために使うのか、どの言語や環境で使えるのか、使い方のコツと注意点を中学生にもわかる自然な日本語で解説します。まず前提として、pragma というのはコンパイラに対して特別な指示を出すための命令であり実行時の挙動には影響しません。#pragma region とはは主に統合開発環境 IDE でコードを折りたたむ機能を管理するための指示であり長いソースコードの中のブロックを表示するか非表示にすることで見通しを良くします。折りたたみはエディタの機能であり実行時には関係なく作業の効率化を目的とします。実際の書き方の例としては開始と終了を示す記述を使いますがIDEにより扱いが多少異なります。例えば Visual Studio や他の IDE で使われる形は地域により若干の違いがありますが一般的には開始を示すものと終了を示すものを対にして使います。長くなるコードの前後に一目で区切りを作るためのラベル的な役割として利用されます。C あるいは C++ の標準仕様には含まれていない場合も多くコンパイラの挙動を変えませんが一部の IDE では正しく機能します。C# をはじめとする他の言語では region と endregion が公式にサポートされるケースが多くこの点は知っておくと良いでしょう。使い方のコツとしては意味のある名称を付けること長さの長いクラスやファイルを整理することなどです。使用する場面としてはファイルが長くなり読みづらいときの仮想的な区切り方として効果的ですが過度な乱用はかえって混乱を招くので適切な範囲で使うよう心がけてください。
pragmaの同意語
- ディレクティブ
- プログラムのコンパイラやツールに対して特別な動作を指示する命令(例: #pragma)。
- 指示
- 特定の処理を求める命令・指示。
- 命令
- 機械やソフトウェアに対して実行させる具体的な動作の指示。
- コンパイラ指示
- コンパイラに対して最適化や処理方法を指定する指示。
- プリプロセッサ指示
- プリプロセッサの挙動に影響を与える指示。
- 最適化指示
- コンパイラの最適化挙動を制御する指示。
- 設定指示
- ビルドや実行時の設定を指示する命令。
- 実用主義
- 実用性を重視する思想。pragmatism の訳語。
- 実用性
- 現実の用途における有用性・機能性。
- 実用
- 現実の用途に対して有用な性質・能力。
- 実務
- 現場での仕事や職務、実務上の技能。
- 実践
- 理論を現実の場で試し、適用する行為。
- 実践的
- 現実的で実用的な方法や姿勢。
- 現実的
- 理想論ではなく現実の状況に即した性質・判断。
- 現実志向
- 現実的な成果を重視する考え方。
- 現実主義
- 現実に基づく判断・対応の思想。
- 行為
- 実際に行われる動作・振る舞い。
- 実行
- 計画したことを実際に行うこと。
- 行動
- 自発的にとる動作・振る舞い。
- 実務的
- 実務に適した・現場で役立つ性質。
- 実務的能力
- 現場で役立つ実務的な技能や対応力。
- 適用
- ある理論・ルールを具体的な場面に適用すること。
- 用途
- 使われる目的・使用方法。
- 用途適用
- 特定の機能を得るための具体的な使用ケース
- 使用用途
- 特定の機能や効果を得るための使い道。
pragmaの対義語・反対語
- 理論的
- 実務や現場の適用より、原理・法則・理論そのものを重視する考え方。実践的な解決策より、学術的・概念的な理解を優先します。
- 抽象的
- 具体的な事例や現実の適用を意識せず、概念や枠組みに焦点を当てる考え方。実務での適用性を軽視しがちです。
- 理想主義的
- 現実の制約を無視して理想や完璧さを追求する立場。実用性を軽視することがあります。
- 学究的
- 学術的な研究や理論の探究を重視し、現場の実務的な課題解決よりも理論の深化を優先する態度。
- 原理主義的
- 原理や基本原則の適用を最優先とし、現実の状況や実用性を二の次に置く考え方。
- 概念中心
- 具体的な実装・応用より、概念や枠組みの理解を優先する立場。
pragmaの共起語
- once
- ヘッダファイルの二重インクルードを防ぐための指示。#pragma once はファイルが一度だけ読み込まれるようにします。
- header_guard
- ヘッダファイルの二重読み込みを防ぐ仕組み。include guard の一つの実装として使われることがある。
- directive
- pragma はコンパイラ/プリプロセッサへの指示(ディレクティブ)の総称です。
- MSVC
- Microsoft Visual C++ のコンパイラで使われる pragma の実装。警告の抑制や最適化設定などに使われます。
- GCC
- GNU Compiler Collection が解釈する pragma の実装。対応する機能はプリプロセッサ指示として動作します。
- warning
- 警告の有効化・無効化を指示する共起語。例: #pragma warning(disable: ...)。
- pack
- メモリ上のデータ構造の配置(アライメント)を指定する指示。#pragma pack で利用します。
- push
- 現在の packing/アライメント状態を保存する指示。#pragma pack(push, ...)。
- pop
- 保存した packing/アライメント状態を復元する指示。#pragma pack(pop)。
- region
- コードブロックを折りたたむための指示(主に Visual Studio の機能で使用)。
- endregion
- region の終了を示す指示。
- optimize
- 最適化の設定を指示する。コンパイラの最適化レベルを切替えます。
- message
- コンパイル時にメッセージを表示する指示。#pragma message など。
- header
- ヘッダファイルに関連する操作の総称。
- include_guard
- インクルードガード(ヘッダの二重読み込み防止)の概念。
- foreign_keys
- SQLite などで外部キーの有効化・無効化を切り替える pragma。
- journal_mode
- SQLite でジャーナルのモードを設定する pragma。
- synchronous
- SQLite のデータベース同期動作を制御する pragma。
- cache_size
- SQLite のキャッシュサイズを設定する pragma。
- auto_vacuum
- SQLite の自動 VACUUM の設定を行う pragma。
- table_info
- テーブルのメタ情報を取得・表示する pragma。
- encoding
- データベースの文字コード設定を行う pragma(主に SQLite)。
- case_sensitive_like
- LIKE 演算子の大文字小文字感度を設定する pragma。
- mmap_size
- SQLite のメモリマッピングサイズを設定する pragma。
pragmaの関連用語
- #pragma
- C/C++ などのプリプロセッサディレクティブの総称で、コンパイラへ特別な指示を出す命令です。
- #pragma once
- ヘッダファイルの二重インクルードを防ぐ指示。インクルードガードの簡易版として広く使われます。
- #pragma pack
- 構造体のメモリ配置を指定する指示。アライメントを変更してデータサイズを調整します。
- #pragma region
- Visual Studio などでコードの折りたたみ領域を定義する指示。
- #pragma warning
- 特定の警告を抑制または変更する指示。コンパイラ依存の実装です。
- #pragma optimize
- 最適化の有効化無効化を切り替える指示。主に MSVC で使われます。
- #pragma deprecated
- 特定の機能を非推奨として警告を出す指示。
- プリプロセッサディレクティブ
- プリプロセッサが解釈する指示全般の総称。pragma もこのカテゴリに属します。
- ディレクティブ
- ソフトウェアの挙動を指示する命令の総称。pragma はこの一部です。
- HTTP Pragma
- HTTP プロトコルにおける古いキャッシュ指示。
- Pragma: no-cache
- HTTP ヘッダの一つで、キャッシュを使用しないように指示します。
- PRAGMA (SQL)
- SQL における設定指示。データベースエンジンに対して動作を変更します。
- SQLite PRAGMA
- SQLite が提供する設定コマンドの集合。データベースの動作を設定・取得します。
- PRAGMA user_version
- アプリ側で使う任意のバージョン番号を格納する整数値。
- PRAGMA foreign_keys
- 外部キー制約の有効化または無効化を切り替える設定。
- PRAGMA journal_mode
- トランザクションのジャーナルモードを設定します。例: WAL/DELETE。
- PRAGMA synchronous
- データの耐久性とパフォーマンスのバランスを設定します。
- PRAGMA integrity_check
- データベースの整合性を検査する診断コマンド。
- PRAGMA compile_options
- データベースのコンパイル時オプションを取得する診断命令。
- PRAGMA temp_store
- 一時データの保存場所を指定する設定。
- PRAGMA recursive_triggers
- 再帰トリガーの有効化または無効化を設定します。
- プリプロセッサとコンパイラの関係
- pragma は多くの環境でコンパイラ依存の実装となるため、環境ごとに使い方が異なります。



















