かぞえチャオ!、ここみチャオ!に対するご意見、ご要望を受け付けています。
ユーザの皆様の情報交換の場としても、ご活用ください。
掲示板荒らし対策のため、投稿内容を確認させていただいた後、公開いたします。
はじめまして。
最近使用し始めたものです。
関数外での#if (マクロ)の認識についてご教授いただけますでしょうか。
下記のような例でステップ数をカウントしようとしておりますが、#ifで囲っている箇所は常に有効、
#else側は常に無効としてカウントされているようですが、
意図通りにカウントする方法はありますでしょうか。
#define AAA 1
#define BBB 0
#if AAA
void func1(void) → 有効
{
・・・
}
#else
int func1(void) → 無効
{
・・・
}
#endif
#if BBB
void func2(void) → 無効
{
・・・
}
#else
int func2(void) → 有効
{
・・・
}
#endif
-----ciaosyst.dat-----
[PREPROCT]
0
-----ciao_c.edt-----
[PREPRO]
2
3,0,1,1,0,0
#if
#elif
#else
#endif
1,1,0,0
#else
#endif
[MACRO]
1
AAA
コメント
d_nさま
はじめまして。
かぞえチャオ!をご利用いただき、ありがとうございます。
ご質問の件、回答いたします。
かぞえチャオ!Ver.1.53以降であれば、ciao_c.edtの[PREPRO]セクション、[MACRO]セクションを下記のようにすることで、ステップの有効/無効が指定できます。
[PREPRO]
2
3,0,2,2,0,0
#if
#elif
#else
#endif
1,1,0,0
#else
#endif
[MACRO]
1
AAA,1
マクロAAA=1と定義することで、#if AAAが有効になります。
マクロBBBは、定義してないため、#if BBBは無効になります。
この設定で、一度お試しください。
>>1
早速のご回答ありがとうございます。
試してみましたが、期待通りの結果となりませんでした。
上記例の期待結果としては、
void func1()、int func2()は有効としてステップ数カウント、
int func1()、void func2()は無効としてステップ数0
となることですが、
ご教授いただいた設定でも
void func1()、void func2()が有効、
int func1()、int func2()が無効となりました。
使用しているツールはかぞえチャオ! Ver.1.61β7です。
>>2
d_nさま
調査しますので、ご利用の定義ファイル(ciao_c.edt)とシステムデータファイル(ciaosyst.dat)を、メールにて送っていただけますでしょうか?
以上、お手数をお掛けして申し訳ございませんが、よろしくお願いいたします。
>>3
メールでの問い合わせに対し、ご回答ありがとうございました。
送付いただいた定義ファイルにて、ほとんど意図通りカウントされましたが、もう一点だけご教授ください。
void func1()とint func2()を有効と認識し、void func1()の方は
実ステップ数も正しく算出されますが、int func2()は実ステップ数が
1行多くカウントされます。
(#endifの行まで有効となっている?)
これについて回避方法はございますでしょうか。
>>4
d_nさま
お問い合わせの件、回答いたします。
プリプロセッサ定義を下記のようにしてください。
改行コード前に半角スペースが入っていれば除いてください。
[PREPRO]
3
3,0,2,2,0,0
#if
#elif
#else
#endif
1,1,0,0
#else
#endif
0,1,0
#endif
この設定で、一度お試しください。
以上、よろしくお願いいたします。
>>5
ご教授いただいた設定ですべて意図通りとなりました。
ありがとうございました。
>>6
度々すみませんが、追加でもう1点だけ質問(要望)させてください。
現状、マクロの登録数は上限255個までとなっておりますが、
上限を増やすことは可能でしょうか。開発に使用している
マクロが数千オーダーであるため、増やしていただけると
ありがたいです。
>>7
d_nさま
お問合せの件、回答いたします。
現状、マクロの登録数の上限は、256固定となっています。
次回以降のバージョンアップで、マクロの登録数の上限を10000個程度に拡張したいと思います。
>>8
最新版でのマクロ登録数拡張ご対応ありがとうございました。