我正在熟悉科学的流体动力学代码。代码几乎总是使用预处理器指令,例如
#ifdef PARTICLES
int nghost = 5
#else
int nghost = 4
#endif
而不是更简单的 C 标志,例如,
int nghost = 4;
if( particlesFlag ) { nghost = 5; }
预处理器标志的缺点是(在此框架中)它需要在每次构建之前为每个问题设置进行配置(创建头文件),而使用 c 代码标志只需要重新编译。
这种方法的优点是什么?
似乎任何效率的提高都会非常小——尤其是因为这段代码(例如)只在程序初始化时运行一次,而所有真正的工作都发生在不同处理器的循环中,等等。