C++配置之间切换的最佳方式
C++ best way to switch between configs
我有一些代码需要针对不同的情况运行。对于这些情况,我将不得不主要切换一些枚举和静态。所以,假设我有枚举
enum class City { NY, LA, W_DC, ... }
City capital = City::W_DC
对于另一种情况
enum class City { LDN, BMH, EDB, ... }
City capital = City::LDN
假设我有很多这样的枚举,那么重用大多数代码并在这些配置之间切换的最佳方法是什么。需要明确的是,这并不意味着在运行时发生,程序应该针对一种情况进行编译,而忽略其他任何事情。
编辑:跟随StackOverflowUser使用宏
将不同的枚举配置存储在不同的命名空间中,然后执行
#IFDEF USE_NAMESPACE_A
using namespace namespace_a
#ELSE
using namespace namespace_a
#ENDIF
在我看来
,创建宏并使用#ifdef MACRONAME
是在运行时之前检查事物的最佳方式。您还可以创建constexpr
变量并使用 ifs 来计算这些变量的值。由于变量是constexpr
的,编译器很可能会优化它们。
一种选择是创建单独的源文件,每个源文件都包含所需的枚举。 然后,创建不同的编译目标,这些目标将相关文件编译为生成的一部分。
另一种选择是如前所述使用 #ifdef...#else 预处理器宏,但您可能有不同的编译目标来定义包含正确文件的宏。 与其设置它,所以你必须更改代码并更改构建,只需将其放入构建中即可。
但是,老实说,枚举可能不是做你想做的事情的最佳方式。 在运行时从文件/数据库/或其他一些数据源查找可能是一种更易于维护的方法。 这显然需要更多的工作,但如果这是长期保持的东西,你以后会感谢自己。
相关文章:
- 在c代码之间共享数据的最佳方式
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 在reactor中存储eventHandlers的最佳方式是什么
- 在AVX通道中混洗的最佳方式
- 从 T 创建 std::future 的最佳方式<T>
- C++:使用 std::unique_ptr 访问重载运算符++的最佳方式?
- 对列表列表中的元素进行分组的最佳方式
- 利用 GPU 的最佳方式
- 使用 QT C++过滤大数据的最佳方式
- 算法设计:用边界数字表示 2D 网格的最佳方式,以C++?
- 在C++中共享键值对的最佳方式
- 为Catch2中的外部文本文件指定路径的最佳方式
- 代表Quarto棋盘游戏棋子的最佳方式
- 等待线程的最佳方式是什么
- 将uint8_t*buffer和size_tbufferlen从C++传递到C中的API函数的最佳方式是什么
- 创建控制台菜单C++的最佳方式
- 只显示片段着色器的最佳方式是什么
- 复制文件的最佳方式是什么,以便我可以在复制过程中轻松取消复制?