#if LIB_VERSION_GE_3
lib_f (1, NULL);
#else
lib_f (1);
#endif
It can be difficult to do this with other mechanisms where the compiler is actually compiling and therefore type checking both branches.OCaml is a pretty rich language with many features, but we fall back on preprocessors like cppo (or even cpp) to deal with these kinds of cases.