[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:06883] c-mode のインデント



なお@なごや です。

 c-modeにおいて、プリプロセッサ文の直後のインデントが不自然になることがあります。
下のような条件の場合、TYPE1のように、ifがforと同じ位置にくるのが(私としては)理想
なのですが、TYPE2以後のように、#が行頭にないばあい、プリプロセッサ文直後とそれ以後
でインデント位置が変わってしまいます。

#こういう書き方が文法的に許されるのか、ちょっと疑問なのですが手元のCの入門書
#には「#は行頭になければならない」という文はみつかりませんでしたし、コンパイル
#も通っています

void func(void)
{
  char a,b;
#ifdef TYPE1
  if(a==b)
    ;
  for(;;)
    {
      ;
    }
#endif
  ;
  #ifndef TYPE2
    if(a==b)
      ;
  for(;;)
    {
      ;
    }
  #endif
  ;

  for(;;)
    {
 #if TYPE3==TYPE2
   if(a==b)
     ;
      for(;;)
        {
          ;
        }
 #endif
    }
  ;
   #define AAA bbb
     if(a==b)
       ;
  for(;;)
    {
      ;
    }
  ;
}

--
Nao Wada @ Mobile (Powerd by Windows CE 2.11)
nao_wada@xxxxxxxxxxxx
#xyzzyのバージョンは0.2.1.195です。

Index Home