Ver.2.00 2016.05.05 Sorry,This page is Japanese Language Only....

かぞえチャオ!技術情報のページです。

かぞえチャオ!システムデータ
拡張子個別データ←New
自動実行オプション
ラインカウント方法
ステップ比較方法
ここみチャオ!システムデータ
推奨コーディング規約
比較対象決定方法について
プリプロセッサ指定について
ステップ比較の種類について
静的解析連携機能について
集計しチャオ!の使い方
かぞえチャオ!を使うにあたって
かぞえチャオ!CSV出力フォーマット
かぞえチャオ!でコードレビュー
かぞえチャオ!Ver.1.63の新機能

技術情報は、今後どんどん増やす予定です!

戻る


かぞえチャオ!プリプロセッサ指定

プリプロセッサ指定の方法について、以下に記載します。

プリプロマクロなし状態

上記は、2008.06.21にリリースした、C言語、C++用のデフォルト定義ファイルのプリプロ設定部です。

なお、#if !defined(XXXXXXX) に対応する場合は、下記のようにプリプロ設定を変更してください。
定義数を5→6に変更して、#if !definedに関する記述3行を、#if の上に追記します。
この記述は、かぞえチャオ!Ver.1.52β5、ここみチャオ!Ver.1.52β5以降で有効となります。

プリプロマクロなし状態一部変更

Ver.1.53β5からは、この記述を追加しなくても、#if !defined や #if defined の有効、無効が判定できるようになりました。
#if の上の「3,0,1,1,0,0」を「3,0,2,2,0,0」に変更することで、マクロ部分の演算が可能になり、!defined、defined が判定できます。
Ver.1.53に同梱の拡張子個別情報ファイルは、変更済みです。
2016/12/18に、下記の74行目~76行目を追加し、60行目の設定数を5→6に変更しました。

Ver.1.53プリプロマクロなし状態

Ver.1.52β5より、マクロ定義のプリプロセッサへの追加は、

#if XXXXXX

のように空白やタブで区切る記述だけでなく

#if (XXXXXX)
#if(XXXXXX)

のようにマクロ定義をカッコで括った記述にも対応しました。
これにより、マクロ定義[MACRO]のほうでカッコをつける必要はなくなりました。

#if !definedに関する記述を追加した場合、
拡張子個別情報ファイルの[MACRO]セクションに何も定義がなければ、下記のコードは有効になります。
[MACRO]セクションに、AAAが設定されていると、下記のコードは無効になります。

プリプロありコード1

また、空白やタブは無視して処理するため、空白やタブがなくてもプリプロセッサを認識できるようになりました。
[MACRO]セクションに、AAA==1を設定すれば、下記のコードはすべて有効になります。

Ver.1.53β5からは、

[MACRO]
1
AAA,1

を指定すれば、下記のコードはすべて有効になります。

プリプロありコード2


Ver.1.55正式版からは、

[MACRO]
1
AAA,1,1

を指定すれば、変更後コードだけマクロAAAが有効になります。

マクロ有効無効設定
0:変更前後とも有効(←省略時は、この指定になります)
1:変更後だけ有効
2:変更前だけ有効
3:常に無効

#ifdef~#endifを含む下記コードを、上記定義ファイルを使ってステップ比較します。

プリプロありコード


ステップ比較でプリプロセッサの削除を行うと、プリプロセッサ内のコードが削除されます。
これは、有効とするマクロの指定がないためです。

プリプロ削除後コード1


C言語、C++用定義ファイルに、マクロ指定を行います。

プリプロマクロあり状態

この指定により、#ifdef COCO_DEF~#endif内にあるコードを有効にします。
上記の例では、マクロを1つだけ指定しています。
有効とするマクロの数と、マクロ名を指定します。最大10000個登録できます。(Ver.1.60以前は255個まで登録可能)
かぞえチャオ!は、[MACRO]セクションに定義されているマクロを有効とします。
ソースコードやメイクファイルにあるマクロ定義は参照しませんので、ご注意ください!
コンパイラのように、#includeや#defineの展開は行っていません!

ステップ比較でプリプロセッサの削除を行うと、下記のようにプリプロセッサ内のコードが残ります。

プリプロ削除後コード2



▲TOP

戻る

Copyright(C) Ciao-ware. All rights reserved.