c++ - 可视化标记条件编译

标签 c++ cross-platform c-preprocessor

<分区>

我们有大量为多个目标编译的 C/C++ 代码,由 #ifdef 分隔。其中一个目标与其他目标非常不同,了解您正在编辑的代码是否针对该目标进行编译通常很重要。不幸的是,#ifdefs 可能非常分散,因此并不总是很明显为哪些目标编译了哪些代码。

Visual Studio 的#ifdef 突出显示有助于直观地识别为哪个目标编译了哪些代码,但更改突出显示显然需要修改项目文件。

我有兴趣找到一种工具或方法来帮助编码人员快速识别哪些目标正在使用每一行代码。即使它需要某种手动的源内注释,我认为它仍然会有帮助。最好的情况是它是自动化的,不依赖于特定的编辑器或 IDE,并且可以配置为在某些情况下发出警告(例如“您在 Target X 上修改了一些代码,请务必在该平台上测试您的代码!”)。

最佳答案

如果您的代码变得如此庞大以至于您无法分辨#ifdef 中的内容,那么是时候重构您的代码了。我建议您将其重构为每个平台单独的 cpp 文件。

我通常只在代码只有一两行长时才使用#idef,而且我通常将其重构为唯一的函数或类到自己的 cpp 文件中。这使得确定您所在的位置变得简单。

关于c++ - 可视化标记条件编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/941669/

相关文章:

c++ - 没有运算符 ">> "匹配这些操作数

c++ - 使用 IBM Rational Rhapsody 的显式成员特化

C++ 类依赖 typedef 在类外部声明

c++ - 将文字分配给 std::u16string 或 std::u32string

c++ - 是否可以将前向声明和常规声明合并到一个文件中,然后像分开一样使用它?

定义 NULL 和 NULL_POINTER 的正确方法?

javascript - 我应该为不同的设备单独制作 "responding script"吗?

c++ - UDP套接字缓冲区溢出检测

mvvm - 清理 ViewModels MVVM Light 和 Xamarin 表单

c++ - 定义用 0 替换