初めて質問させていただきます。
C/C++ のコードを見ていると「#pragma」という表現を見かけることがあるのですが、これはどういう働きをするものなのでしょうか?初歩的なことなんだとは思いますが、ご回答のほどよろしくお願いいたします。

A 回答 (4件)

 #pragma(プラグマ)は、コンパイラに用意されている特殊な機能を有効にするよう指示するためのコマンドです。


(プリプロセスという言い方はありません。プリプロセッサディレクティブと言います。)
 通常このような機能は、コンパイラを起動する際にコマンドラインからオプションとして指定するのですが、これをソースコード内から指示することができます。
(統合開発環境などでは、このオプションを指示するための画面があったりもしますが。)

 で、この「特殊な機能」というのは何なのかというと、これが結構曲者で、処理系(コンパイラ)によって機能も指定方法もマチマチなため、「こういう機能があります」とは言い切れないんです。。。
 そんな訳で一般的なC/C++について書かれた本で、処理系に依存する#pragmaを、大々的に取り上げた物を見たことがありません。

 じゃあこれを使いこなすにはどうしたらよいかというと、、、そのコンパイラに付属しているハズのマニュアルを読むしかないですね。
 頑張ってください。

この回答への補足

ちなみに現在使用しているコンパイラは、CAD-UL社のx86クロスコンパイラです。

補足日時:2001/06/11 14:08
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
>で、この「特殊な機能」というのは何なのかというと、これが結構曲者で、
>処理系(コンパイラ)によって機能も指定方法もマチマチなため、・・・

つまり、コンパイラによって方言があるということですね。

leaz024 さんの仰ることから判断すると、#pragma で宣言される引数については、コンパイル時に指定することでも対応することができる、ということですね。
ありがとうございます。これを踏まえまして再度確認してみます。

お礼日時:2001/06/11 14:06

「#pragma」はコンパイラ毎に定義されている命令を記述するプリプロセッサ


です。多くのコンパイラでは、コマンドライン引数で定義するオプションを
「#pragma」で記述することができます。

そのような性格のものですから、ある程度プログラミングの知識のある人が使
うものばかりです。

ちなみに「#pragma」という記述だけでは動作はわかりません。
「#pragma」のすぐ後ろにあるコマンドが実動作を示しています。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
>ちなみに「#pragma」という記述だけでは動作はわかりません。
>「#pragma」のすぐ後ろにあるコマンドが実動作を示しています。
アセンブラ定義の割込みルーチンが書かれていたようなきがします。
確認してみます。

お礼日時:2001/06/11 13:48

初歩的な事ではないので、


もう少し勉強してからでも良いのではないでしょうか?

#が付いているのはプリプロセッサだと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
もっと勉強します。

お礼日時:2001/06/11 13:45

プラグマは、コンパイラーに対して、定義されている命令です。


詳しくは参考URLをご覧ください。

参考URL:http://www.rcnp.osaka-u.ac.jp/Divisions/CN/ibm/a …
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考にさせていただきます。

お礼日時:2001/06/11 13:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング