2016-11-26 2 views
1

У меня есть код на C++ вдоль линийЕсть ли способ изменить препроцессор C, какую версию STL я использую?

#include<vector> 

std::vector<double> foo; 

мне нужно скомпилировать этот код для встраиваемых платформ, которая использует пользовательский реализация STL называется uSTL. Для его использования требуется #include с заголовком ustl.h и all STL classes are defined in another namespace. Поэтому приведенный выше фрагмент кода должен стать

#include<ustlh.> 

ustl::vector<double> foo; 

Я не хочу, чтобы изменить исходный код, потому что код библиотеки используется другими не-встроенных приложений. Я думал использовать препроцессор C для преобразования #include<vector> в #include<ustl.h>, но это кажется невозможным (имена макросов должны быть действительными идентификаторами).

Есть ли другой способ препроцессора C сделать это? Или есть другой способ, который не подразумевал бы изменение исходного исходного кода?

ответ

0

Вы должны были бы сделать что-то вроде:

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

vector<double> foo;