我正在编写一个程序,我想根据各种宏变量的值输出不同类型的调试信息(这样我就可以更改一个标志的值,然后导致不同级别的信息写入屏幕)。
例如,假设我有以下代码将有关我的程序的信息打印到屏幕上(称为D1):
cout << "% Percentage complete: "
<< ceil((static_cast<double>(idx)/static_cast<double>(ITERATIONS))*(100.00))
<< "%" << endl;
cout << "x = [ x; ";
for(int i=0; i<space.getDimension(); i++)
cout << visited.vec[visited.bestIndex].x[i] << "\t";
cout << "];" << endl;
现在,还假设我有以下代码可以在屏幕上打印有关我的程序的不同信息(称为D2):
cout << "best = [ best; "
<< visited.vec[visited.bestIndex].meanQALY() << "];\n" << endl;
space.displayConstraintsMATLAB(idx+1);
我希望能够在我的代码中的某些位置插入诸如#D1
和#D2
之类的语句,并让宏处理器用上面的代码块替换这些语句。
我怎样才能做到这一点?
(如果宏不是理想的解决方案,我很高兴听到有关不同方法的建议。)