Emacs在C中的宏后缩进

fak*_*ake 4 c emacs macros auto-indent

#define INIT_MACRO create(); some(); enviroment();
...
void function(){
  INIT_MACRO
    extra_indented();
  normal_indented();
}
Run Code Online (Sandbox Code Playgroud)

当请求自动缩进时,如何使emacs正确处理上述情况?

编辑我看到的唯一解决方案是告诉emacs处理只包含大写字母,下划线和空格的行,好像他们最后有一个分号......但我该怎么做?

Sim*_*mon 10

这有效:

#define INIT_MACRO do { create(); some(); enviroment(); } while (0)
...
void function(){
  INIT_MACRO;
  extra_indented();
  normal_indented();
}
Run Code Online (Sandbox Code Playgroud)

使用时通常最好使用此技巧来避免出现问题:

if (...)
  MACRO();
else
  ...
Run Code Online (Sandbox Code Playgroud)

在我看来,每行上的分号更容易阅读.

  • 正如我告诉过你的那样,对我而言,这不仅仅是为了缩进,也是为了安全性和可读性. (3认同)