【问题标题】:How to change the color of Preprocessor Conditionals such as #if in Vistual Studio?如何在 Visual Studio 中更改 #if 等预处理器条件的颜色?
【发布时间】:2016-12-01 22:22:42
【问题描述】:

有没有办法改变预处理条件的颜色,比如,

#if
#ifdef
#ifndef
#endif

我确实在使用大量预处理器条件的大型 C 库上工作,正如您在下面的示例中所见,这确实限制了代码的可读性,因为 C 程序员通常不会缩进这些条件。 使用 Keywork Highlighting 将这些行变灰将有助于避免将这些未缩进的行混淆为长 if 语句的结尾等。

示例代码,

    ...
   if( ... )
    {

        for( uint8_t i = 0, k = 0; i < FOO; i += 16, k++ )
        {
            for( uint8_t j = 0; j < 16; j++ )
            {
#if defined( BAZ ) || defined( BAR )
                if( ... )
#else
                if( ... )
#endif
                {
                    if( ... )
                    { 
                        continue;
                    }
#if defined( BAZ_ ) || defined( BAR_ ) || defined( FOO_ )
                    if( ... )
                    {
                        if( ... )
                        {
                            continue;
                        }
                    }
#endif
                    if( ... ) 
                    { 
                        continue;
                    }
                    if( ... )
                    { 
                        foo++;
                        continue;
                    }
                }
            }
        }
    }
    ...

注意:我已经为 Visual Studio 提出了问题,但是,我将使用 Atmel Studio 中的解决方案,这基本上是一个相同软件的重新标记版本。过去我已经成功地将大部分 VS 附加组件安装到 Atmel Studio,但是如果你的解决方案要包含它,我还没有尝试过 R#。

更新:

在发布问题后,我实际上注意到 Stackoverflow 上的语法高亮显示做得非常出色,完全符合我的想法。 # 条件显示为灰色,其余代码读起来很漂亮。我希望能够在 VS/AS 上做同样的事情。

【问题讨论】:

    标签: visual-studio c-preprocessor syntax-highlighting atmelstudio


    【解决方案1】:

    Visual Studio 中的相关功能称为Show Inactive Blocks. 您可以在以下位置找到该选项:

    Tools -&gt; Options -&gt; Text Editor -&gt; C/C++ -&gt; View

    .. 或者如果使用 Visual Studio 2015 或更高版本,您可以使用 Quick Launch 搜索栏 (Ctrl+Q) 并输入“非活动”一词。

    至少从 VS 2010 开始,这一直是 Visual Studio 的核心功能。默认设置是将不活动的代码块调暗为 65% 的不透明度,这可能不足以在某些显示器上真正从其他代码块中脱颖而出 (如果使用深色主题尤其如此)。我将我的设置为 45%。

    【讨论】:

    • 说实话,我主要在 Atmel Studio 中需要这个,它几乎是 Visual Studio 的重新标记版本,但不幸的是我找不到你提到的选项。我还在快速午餐中输入了它,但什么也没出现。不过感谢您的回答。它 100% 符合我在这里提出的问题。
    【解决方案2】:

    在 Visual Studio 中,转到 Tools/Options/Fonts and Colors 并修改项目 Preprocessor KeywordPreprocessor Text

    【讨论】:

    • 我的列表中只有一个 预处理器关键字,更改它并没有改变 #ifdef 语法中的任何内容。事实上,我什至找不到它有什么变化。
    【解决方案3】:

    一两年前,我遇到了解决方案:Naggy。在其他几个功能(我觉得很有用)中,它使预处理器条件变灰,就像您期望和想要的那样。

    在 Atmel Studio 7.0 中,它可在内置扩展库中使用。从那里安装,重新启动 AS,一切顺利。没有选项或配置设置;它非常简单,而且效果很好。

    我也让它在 Atmel Studio 6.2 中工作,但似乎我必须手动安装它或其他东西。 This AVR Freaks thread 应该有帮助。

    【讨论】:

    • JBurger,这真是太棒了,甚至比我想象的还要好。它实际上使他们的论点未定义的#defines 之间的界限变暗。传奇。谢谢你。
    • @Mehrad 当然可以。我有时会使用不同的#define 标志添加一堆调试代码,我可以快速更改和重新编译这些代码。没有这个扩展,有些部分的代码几乎无法阅读,这很棒。
    • JBurger,Naggy 有什么设置吗?我找不到任何选项或设置。
    • @Mehrad 不,它只是启用或禁用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 2012-04-27
    相关资源
    最近更新 更多