如何禁用Delphi 12中ifdef指令的错误编辑器着色功能?
针对你遇到的用包含文件定义编译器指令导致Delphi 12编辑器错误置灰代码的问题,给你几个可行的解决方向:
直接禁用置灰着色
打开Tools > Options,进入Editor > Syntax Highlighting面板,找到名为Gray out inactive code(或类似的“Inactive conditional code”选项),取消勾选即可。这个选项专门控制条件编译中未激活代码的置灰效果,关掉后就不会再错误置灰代码了。修改置灰代码的颜色(保留功能但不显眼)
如果不想完全禁用条件编译着色,可在Tools > Options > Editor > Color里,从Element下拉列表中找到Inactive Conditional Code(部分版本可能显示为Conditional Compilation - Inactive),将它的前景色改成和普通代码一致的颜色(比如默认的黑色),这样视觉上就不会有置灰的问题了。临时规避方案
可以在当前代码文件开头手动重复一遍包含文件里的{$DEFINE}指令,编辑器会识别到这个定义,不会置灰相关代码;编译时编译器会优先处理包含文件的定义,不会影响编译结果。另外,把包含文件添加到项目(Project > Add to Project),也能让编辑器正确解析里面的指令定义。等待官方修复
这个问题大概率是Delphi 12的编辑器解析bug,建议关注Embarcadero的官方更新,后续补丁可能会修复编辑器无法识别包含文件中编译器指令的问题,升级到最新版本或许能彻底解决。
内容的提问来源于stack exchange,提问作者kgz

