C言語入門(24)コンパイラ依存にはなるけど、知っているといないとで違いがでる#pragma

Posted: 2013年01月24日

#pragma 文は、コンパイラ固有の指定を行う手段として ISO/JIS/ANSI 規格で定められています。
#pragma 文の構文は、コンパイラによって異なります。
定義されていない構文を使用してもエラーになることはなく無視されるとは思いますが
そこは、コンパイラ次第だとおもいます。

今回は、Visual Studioで行った場合について書いていきます。

Visual Studioのpragmaについては以下のサイトに詳細に記述されています。
http://msdn.microsoft.com/ja-jp/library/d9x1s805.aspx

#pragma wrning

一般的なpragmaとして、warningです。
これは、名前のとおりですがエラーや警告を表示しなくさせます。

 #pragma warning ( disable : 4507 )  // 4507の警告を無効化(非表示)
 #pragma warning ( disable : 4507 4508 ) // 4507, 4508の警告を無効化(非表示)

disable以外にもonceやerrorなどもあります。
こちらについても上記のサイトを参照してください。

通常は、警告を非表示にすることは悪であり良くないことです。
しかし時と場合により仕方がないときもあります。
それは、既存コード(修正元)で発生している警告(コンパイラのバージョンアップで発生)です。
手を入れたほうがいいですが入れて問題になるよりは、そのままにするという策を取ることもあります。
誰が作成したかもわからないものを保証することは、難しくテストに時間をかける必要があるため
現実的ではないと判断されることがあります。
でも、警告は表示されてほしくないためこのような手を打ちます。

#pragma region, endregion

個人的には多用していますが一般的かは不明です。
regionを用いることでregion-endregionでくくられたプログラムをグルーピングすることができます。
Visual Studioで表示した場合、グループのみを表示した場合は数万行あるcppでもグループ名のみのため
必要な箇所にたどり着くことが素早く出来ます。
そのため、メンテナンスも楽になります。

 #pragma region 定数
 #define BYTE_MAX (255)
 #pragma endregion

この場合グループのみを表示すると

pragma region 定数

この行のみになります。

その他のpragma

私が勉強不足もありその他でまとめますが
pragmaは活用できれば、開発やメンテナンスに役に立ち
後々に自分に振りかかる災は、活用しない場合よりも少なくなると思います。
時間に余裕があれば調べる価値は有りそうです。

練習練習:

  1. region, endregionを用いてコードの可読性を向上させてください
カテゴリー: プログラム, 入門 | タグ: , , | コメント無し »

コメント