【问题标题】:Eclipse how can I indent C++ preprocessor macrosEclipse 如何缩进 C++ 预处理器宏
【发布时间】:2015-11-24 01:20:31
【问题描述】:

我在 Eclipse 中找不到设置,因此我可以让它自动缩进我的预处理器宏,就像缩进代码一样。例如 eclipse 尝试像这样格式化代码。

int main()
{
#ifdef SOMETHING
     cout << "Something Defined" << endl;
#endif
    return 0;
}

而我希望它看起来像......

int main()
{
    #ifdef SOMETHING
     cout << "Something Defined" << endl;
    #endif
    return 0;
}

有什么想法可以让 eclipse 按我的意愿去做吗?

【问题讨论】:

    标签: c++ eclipse


    【解决方案1】:

    Eclipse 缩进是正确的。无论周围代码的缩进如何,预处理器指令都应该在最左边的列中。

    【讨论】:

    • 有什么客观原因吗? “它更突出,我发现它应该突出。”?
    【解决方案2】:

    Pre-ANSI C 预处理器不允许在行首和“#”字符之间留有空格;前导“#”必须始终放在第一列。

    现在不存在 Pre-ANSI C 编译器。使用您喜欢的样式(“#”之前的空格或“#”和标识符之间的空格)。

    但我建议你这样做:

    只需使用查找/替换对话框和推送“全部替换”

    【讨论】:

    • 好吧,我知道我可以重新缩进所有内容,但这有点烦人,因为我必须在每一行之后都这样做,因为当我输入 # 时,编辑器会自动删除我的缩进。
    • +1 用于查看标准。考虑到 Eclipse 及其设置的疯狂复杂性,这也让我很恼火
    【解决方案3】:

    我认为没有宏缩进的选项。但我看到 clangformat 似乎有宏缩进选项,因此您可以自定义自己的 clang 格式 (http://clang.llvm.org/docs/ClangFormatStyleOptions.html) 并将 eclipse 配置为使用 clangformat 而不是默认的。

    【讨论】:

    【解决方案4】:

    要缩进预处理器,您可能需要改用Neatbens。它的格式化程序忽略了 preANSIc。

    【讨论】:

    • 我知道。不过,我不会因为这个次要原因而改用 netbeans。
    • 你是对的,但我这样做是为了跳过时间至少在截止日期之前提交,我相信有一种方法可以“说服”eclipse 阅读缩进宏的配置。
    【解决方案5】:

    就像其他人已经指出的那样,编译器指令# 必须从第一列开始才能符合标准。然而,允许在它们后面放置空格。所以我的首选解决方案如下所示,那么它应该不再是 Eclipse 问题。

    int main()
    {
    #  ifdef SOMETHING
         cout << "Something Defined" << endl;
    #  endif
    }
    

    【讨论】:

      猜你喜欢
      • 2020-02-09
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 2016-12-14
      相关资源
      最近更新 更多