如何处理daft头文件

Rod*_*ddy 4 c++ include

我试图在某些C++代码中使用第三方SDK.虽然SDK和标题在技术上与C++兼容,但它实际上只是一堆讨厌的C.

特别是主头文件有数百个#defines,其中这些最差.

#define     C  0       //Celsius
#define     F  1       //Fahrenheit
#define     R  2       // Rankine
#define     K  3       // Kelvin
Run Code Online (Sandbox Code Playgroud)

现在,您可以想象在尝试使用包含类似内容的boost库时,我得到的错误消息:

template< typename F > struct template_arity;
Run Code Online (Sandbox Code Playgroud)

一些战术#undefs可以解决问题,但它仍然像一颗定时炸弹.我也可以重写第三方标题的大部分内容,或者只是尝试隔离我真正需要的部分.

有没有更好的解决方案来解决这个问题?

jal*_*alf 8

仅在单个.cpp文件中包含offnding文件,然后通过单独的标头公开所需的功能呢?