我们有大量针对多个目标编译的C/C++代码,用#ifdefs分隔。其中一个目标与其他目标非常不同,知道您正在编辑的代码是否为该目标编译是非常重要的。不幸的是,#ifdefs可能会非常分散,所以并不总是很清楚为哪个目标编译了哪些代码。
visually的#ifdef高亮显示有助于直观地识别为哪个目标编译的代码,但更改突出显示显然需要对项目文件进行修改。
我感兴趣的是找到一种工具或方法,可以帮助程序员快速识别哪些目标正在使用每一行代码。即使它需要一些手动的源代码注释,我认为它仍然是有帮助的。最好的情况是,它是自动化的,不绑定到特定的编辑器或IDE,并且可以配置为在某些条件下发出警告(例如“您在Target上修改了一些代码,请确保在该平台上测试您的代码!”)
发布于 2009-06-02 20:45:05
看看可视化SlickEdit。“选择性显示”选项可能是您正在寻找的。我在上面找不到任何在线文档,但它将允许您从本质上对代码应用一组宏定义。因此,您可以告诉它显示代码,因为编译器将看到它与一组定义的宏。这比预处理器输出要多得多,因为它实际上隐藏了基于宏定义将被排除的代码块。
但是,这不能让您回答“编译中包含的这一行代码是在什么预处理器条件下”的问题。好的是,它将选择性显示过滤器应用于搜索和打印。
发布于 2009-06-02 20:25:28
如果您的代码变得如此庞大,您无法知道您的代码是什么#,那么是时候重构您的代码了。我建议您将其重构为每个平台的单独cpp文件。
我通常只在代码只有一两行长的情况下使用#idef,而且我通常会将其重构为只有函数或类到自己的cpp文件中。这样就很容易弄清楚你在哪了。
发布于 2009-06-02 21:41:30
我知道一个事实是eclipse cdt做到了这一点。它还有其他一些不错的特性和一些不太好的IDE特性。现在,我用vi编码,所以我可能有偏见。
https://stackoverflow.com/questions/941669
复制相似问题