我正在编写一个C++
代码,用于执行2D和3D计算。 main函数有一个参数,我可以从中判断是进行2D或3D计算(dim=2
还是dim=3
)。基于dim
启用/禁用特定代码段编译的最佳选择是什么?我发现this post建议使用 #ifdef
,所以我考虑定义一个宏,然后使用 #ifdef
:
if( dim == 2 )
#define DISABLE_3D true
我确信有更好的方法可以做到这一点,我很乐意拥有它。
答案 0 :(得分:3)
您必须确定它们是编译时还是运行时相关。 #ifdef
宏与编译时相关,因此程序将使用2D或3D功能构建。如果您需要在运行时使用适用于2D和3D计算的功能,则应避免使用#ifdef
宏。
您可以使用C ++的“函数覆盖”功能,而不是使用if (dim==2)
决策。
由于缺少许多细节,我不能给出具体的例子,但如果2D和3D数据存在差异,则可能暗示可以实现函数覆盖。