2016-11-26 70 views
1

我在C++代碼一起的有沒有辦法讓C預處理器改變我使用的STL實現?

#include<vector> 

std::vector<double> foo; 

我需要編譯這個代碼,它使用STL的自定義實現所謂uSTL嵌入式平臺的線。使用它需要 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; 
相關問題