推广C ++代码的有效方法(2D计算到3D计算)

时间:2014-10-01 00:53:54

标签: c++ macros

我正在编写一个C++代码,用于执行2D和3D计算。 main函数有一个参数,我可以从中判断是进行2D或3D计算(dim=2还是dim=3)。基于dim启用/禁用特定代码段编译的最佳选择是什么?我发现this post建议使用 #ifdef ,所以我考虑定义一个宏,然后使用 #ifdef

if( dim == 2 )
    #define DISABLE_3D true

我确信有更好的方法可以做到这一点,我很乐意拥有它。

1 个答案:

答案 0 :(得分:3)

您必须确定它们是编译时还是运行时相关。 #ifdef宏与编译时相关,因此程序将使用2D或3D功能构建。如果您需要在运行时使用适用于2D和3D计算的功能,则应避免使用#ifdef宏。

您可以使用C ++的“函数覆盖”功能,而不是使用if (dim==2)决策。 由于缺少许多细节,我不能给出具体的例子,但如果2D和3D数据存在差异,则可能暗示可以实现函数覆盖。