我有C ++中的代码

#include<vector>

std::vector<double> foo;


我需要为使用名为uSTL的STL的自定义实现的嵌入式平台编译此代码。使用它需要#include生成ustl.h头文件和all STL classes are defined in another namespace。因此,以上代码段应变为

#include<ustlh.>

ustl::vector<double> foo;


我不想修改源代码,因为它是其他非嵌入式应用程序使用的库代码。我当时正在考虑使用C预处理程序将#include<vector>转换为#include<ustl.h>,但这似乎是不可能的(宏名称必须是有效的标识符)。

还有另一种方法让C预处理器执行此操作吗?还是有另一种方式不暗示修改原始源代码?

最佳答案

您必须执行以下操作:

#ifdef USE_USTL
#include <ustl.h>
using ustl::vector;
#else
#include <vector>
using std::vector;
#endif

vector<double>  foo;

07-28 04:44