一、说明
程序中,我们有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,
这就是“条件编译”; 有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。
条件编译命令最常见的形式为:
#ifdef 标识符
程序段1
#else
程序段2
#endif
作用:
当标识符已经被定义过(一般是用 #define 命令定义),则对程序段1进行编译,否则编译程序段2。
其中#else部分也可以没有,即:
#ifdef 标识符
程序段1
#denif
二、举例
parameter.h 中包含
#define UNIT_SPHERE_ERROR
main.cpp
#ifdef UNIT_SPHERE_ERROR
residual = tangent_base * (pts_camera_j.normalized() - pts_j_td.normalized());
#else
double dep_j = pts_camera_j.z();
residual = (pts_camera_j / dep_j).head<2>() - pts_j_td.head<2>();
#endif