我正在开发使用ImageMagick的一个C/C++库(使用/同时支持libMagickCore
和libMagick++
),用于读取和写入的图像数据(未为处理)。检测GraphicsMagick工具或ImageMagick的标头是否包括
现在,我还想支持IM的GraphicsMagick fork(例如使用Debian的graphicsmagick-libmagick-dev-compat
包)。
不幸的是,这些API有足够的分歧,因此我不能使用其中一个作为另一个的直接替换。由于它们仍然非常相似,因此我打算使用多个#ifdef
作为API特定部件。
现在我的问题是,通过包含通用头文件(这两个变体称为相同)之后,通过预处理器指令检测哪个API实际使用似乎相当复杂。
基本上,我正在寻找类似#define
(由IM/GM标头提供)的东西,它可以用来区分两个API。喜欢的东西:
#include <Magick++.h>
#ifdef GRAPHICSMAGIC_DEFINE
// GM-specific code
#else
// IM-specific code
#endif
,或者对C-API:
#include <magick/MagickCore.h>
#ifdef GRAPHICSMAGIC_DEFINE2
/* GM-specific code */
#else
/* IM-specific code */
#endif
想法?