初めて質問させていただきます。
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と関連する良く見られている質問

QWinアプリ(c#) webアプリ(c#.net) とは?

4月から社会人になります。
職種はシステムエンジニアです。
社員十数名ほどの小さな会社で、研修はありません。

何かやっておいた方がいい事はないか質問すると、
「Winアプリ(c#)やwebアプリ(c#.net)あたりをやっておくといいかもしれない。」
との事で、とりあえずC#の入門書を買ってみたのですが、
わからない事だらけで困っています。
超初心者なので、細かく教えて頂けないでしょうか。

(1)Winアプリ・webアプリとは何ですか。
(2)C#とC#.netは同じなのですか。違うのなら、C#.netとは何ですか。
(3)C#とはVisual C#の事ですか?

その他知っておくべき事等お教え頂ければ幸いです。
宜しくお願い致します。

Aベストアンサー

>(1)Winアプリ・webアプリとは何ですか。
WinアプリとはWindowsアプリケーションソフトのこと。
その名のとおりWindowsというOSで動作するアプリケーションソフトのことです。
アプリケーションソフトとは『特定の目的のために作られたソフトウェア』って意味です。

webアプリは、
ブラウザ(IEなど)で動作させるアプリケーションソフトです。
ですので、WindowsというOSに限らずLinuxなど他のOSでもブラウザさえあれば動作します。
このOKWave自体もWebアプリケーションですね。

>(2)C#とC#.netは同じなのですか。違うのなら、C#.netとは何ですか。
同一です。

>(3)C#とはVisual C#の事ですか?
ほぼそう考えてよいと思います。
正確にはVisual C#とはマイクロソフトのVisual Studioを使って、C#という言語で開発するって意味です。


最初はとにかく入門書の内容に従ってプログラムを打ち込んで動かしてみることですね。

QC#とC++/CLIの連携について

C#とC++/CLIの連携について
C++/CLI側にC#で作成した変数を渡したいのですが、やり方がわかりません。

そもそも一つのソリューションにC++/CLIとC#を混在することはできるのでしょうか。
やはりC++/CLI側はDLLにして、C#がそのDLLを利用するのでしょうか。

Aベストアンサー

.NETの各種言語は混在することができます。
たとえば、C#でGUIの設計をし.NET用DLLを作成し、内部処理をC++でWin32APIを使って書き、C++/CLIでラップして、GUIと結び付ける、とかもできます。

「変数を渡す」というのが表現として良く分かりませんが、変数というよりはクラスを共有する感じになるかと思います。

とはいえC++/CLIはネイティブコードとマネージドコードを混ぜれるがゆえに、逆に色々と問題があるので、ちゃんとネットや本で調べたほうが良いかと思います。

Qこれから勉強するならばC++それともC#

site7と言います。
プログラム関連でご飯を食べていくと仮定して、
今から勉強するのならば、C#言語とC++言語のどちらが良いのでしょうか?
いろいろなご意見をいただければ幸いです。

C言語の基本とJava言語の基本はわかります。

Aベストアンサー

どんな畑で食っていくかに拠りますが、この2言語で比較すると

・ウェブシステム
C#。ただしJavaが出来るのならそっちの方が重宝されるかも。

・非ウェブシステム
C または C++。

・社内SEとして
場合によってはVisualBasicとか。

といったところでしょうか?
余裕があるのなら言語の勉強に特化せず、プログラム設計のやり方も身につけておきましょう。
プログラムというのは「設計7割、コーディング3割」です。

QC#とC++/CLIの使い分け

.netFramework用のC系言語にC#とC++/CLIがありますが、この2つはどの様に使い分けていますか?

それぞれ、得意な分野などあるのでしょうか?

よろしくお願いします。

Aベストアンサー

C#のみでほぼ事足ります。
C++/CLIを使う場所はManagedとNativeの橋渡し,というのが2005が出た頃から言われている話ですが,
そういう場合でもC#のみか,C#とCまたはC++を組み合わせて作ることが多いと思います。
C++のクラスライブラリの資産があって,それをそのまま利用したい場合以外にC++/CLIを使う場面は思いつきません。

QC++ C# PL/L などの読み方を教えて下さい

プログラミング言語の勉強を始めたばかりです。
内容についてはいろいろ書いてあるのですが、言語名そのものの読み方がわかりません。
教えて下さい。
知りたいのは以下の言語です。

C++
C#
PL/1
PL/M
VB.NET
Smaltalk
Lisp
Plolog
Delphi

よろしくお願いします。

Aベストアンサー

C++[しーぷらすぷらす]
C#[しーしゃーぷ]
PL/1[ぴーえるわん]
PL/M[ぴーえるえむ]
VB.NET[ぶいびーどっとねっと]
Smalltalk[すもーるとーく]
Lisp[りすぷ]
Plolog[ぷろろーぐ]
Delphi[でるふぁい]

でよいのではないでしょうか。
PL/Mというのは私はしらないので微妙ですが、
大概はそのままの読みでよいはずです。(ドットネットは例外ですね)


このカテゴリの人気Q&Aランキング

おすすめ情報