[不具合?]#if 0のカラー表示についてNo.01528
mor さん 03/06/11 00:24
 
morと申します。
ついに4.00発進ってことで期待しております。
ところで、#if 0のカラー表示について
不具合?な現象がありましたので報告させて頂きます。

Cのコードを書いていて
#if 0
unsigned char hogehoge;
#else
unsigned char mogemoge;
#endif

とすると「hogehoge」の行が「#ifdef等の無効部分」の色に
なってかなりハッピーなのですが、

#if 0 /* delete */
unsigned char hogehoge;
#else
unsigned char mogemoge;
#endif

とすると「mogemoge」の行が無効部分の色になってしまいます。

既出でしたらごめんなさい。

[ ]
RE:01528 [不具合?]#if 0のカラー表示につNo.01553
秀まるお さん 03/06/11 15:30
 
 今直しました。

[ ]
RE:01553 [不具合?]#if 0のカラー表示につNo.01573
mor さん 03/06/11 21:28
 
> 今直しました。

morです。
この件、4.00β2で直っていることを確認しました。

ですが、別件で不具合らしきものがあります。

/*  */#if 0
printf("hogehoge");
#else
printf("mogemoge");
#endif

などと、「#if 0」の「前」に文字が入ると[mogemoge]の
行が無効部分の色になってしまいます。

/*  */#ifndef _HOGEHOGE
printf("hogehoge");
#else
printf("mogemoge");
#endif
も同様です([mogemoge]の行が無効部分の色になる)。
(「_HOGEHOGE」は「#ifdefで有効にする#define値」に設定している)

[ ]
RE:01573 [不具合?]#if 0のカラー表示につNo.01587
秀まるお さん 03/06/12 08:28
 
 #ifや#defineや#includeなどのプリプロセッサ命令の前には、空白/タブ以外
の文字がはいってはいけない仕様だったと思っていました。

 例えば、今、

    int a; #include <windows.h>

 としたら、

    error C2014: プリプロセッサ ディレクティブのシャープ記号 (#)
    の前に、空白文字以外の文字があります。

 とエラーが出ました。

 しかし、

    /*  */  #include <windows.h>

 としたら、それは通ってしまいました。こんな書き方が出来るなんて知りませ
んでした。

 とにかく、/*...*/のコメントだけは除外するように修正させていただきます。

[ ]
RE:01587 [不具合?]#if 0のカラー表示につNo.01641
mor さん 03/06/12 20:37
 
morです。お世話になります。

>    /*  */  #include <windows.h>
> としたら、それは通ってしまいました。こんな書き方が出来るなんて
> 知りませんでした。

私も不安になってVCでコンパイルしてみたりしました。

> とにかく、/*...*/のコメントだけは除外するように
> 修正させていただきます。

了解致しました。
こちらでも、そんなプログラムはほとんど無いのですけどね ^^)
個人的にはVer4.00で一番楽しみに&活用したい機能
ですのでガンガン確認します。

[ ]
RE:01641 [不具合?]#if 0のカラー表示につNo.01650
かじゅ さん 03/06/12 22:54
 
4.00β2のカラー表示について、色の変換がおかしいと思われるのでご報告します。
下記のようなコードを書いた時に"#endif"の行以降がすべてカラー表示されてしまし
ます。
私もこの機能を一番期待していますのでぜひ修正お願いします。

#if 0
unsigned char hogehoge;
#endif/**/

unsigned char mogemoge;


[ ]
RE:01650 [不具合?]#if 0のカラー表示につNo.01683
秀まるお さん 03/06/13 19:14
 
 まいどどうも。今すぐ直します。

[ ]
RE:01587 [不具合?]#if 0のカラー表示につNo.01708
三月 さん 03/06/15 11:21
 
> #ifや#defineや#includeなどのプリプロセッサ命令の前には、空白/タブ以外
>の文字がはいってはいけない仕様だったと思っていました。
>
> 例えば、今、
>
>    int a; #include <windows.h>
>
> としたら、
>
>    error C2014: プリプロセッサ ディレクティブのシャープ記号 (#)
>    の前に、空白文字以外の文字があります。
>
> とエラーが出ました。
>
> しかし、
>
>    /*  */  #include <windows.h>
>
> としたら、それは通ってしまいました。こんな書き方が出来るなんて知りませ
>んでした。
>
> とにかく、/*...*/のコメントだけは除外するように修正させていただきます。

http://www.microsoft.com/japan/developer/library/vclang/_clang_white.2d.spac
e_characters.htm
にあるように
>コメントも空白文字として扱われることに注意してください。
ってことですよね。

細かい話
http://www.microsoft.com/japan/developer/library/vccore/_predir_preprocessor
_directives.htm
をみると#の前に空白文字はよいって言ってるようなので
空白文字になっているコメントはOKってわけです。

でも、#とifの間に空白文字がよいとあるのに改行をいれるとエラーになったり。

ちなみに
#if SAMPLE
# ifdef TEST
  char *x="TEST";
# else
  char *x="REAL";
# endif
#endif
って書き方はOKなのですが対応できるものでしょうか?


[ ]
RE:01708 [不具合?]#if 0のカラー表示につNo.01718
秀まるお さん 03/06/16 13:51
 
> ちなみに
> #if SAMPLE
> # ifdef TEST
>   char *x="TEST";
> # else
>   char *x="REAL";
> # endif
> #endif
> って書き方はOKなのですが対応できるものでしょうか?

 対応できます。んじゃ対応します。

 # /* */ ifdef XXXX

 には対応しないでおきます。

 ちなみにですけど、

 #if defined ABC

 のような書き方には対応しないつもりです。

[ ]