我在我的C++測試代碼中有簡單的委託函數。由於我不能包含原始實現.cpp文件(嵌入式文件),因此我在PC上運行的測試中使用代理.cpp文件。我的想法是簡單地使用相同的宏作爲實現的主體,除了根據簽名提供的括號()和參數。C++命名空間作爲宏值
我想是這樣的:
void Flash::init()
{
DELEGATE_DESTINATION();
}
bool Flash::write(args)
{
DELEGATE_DESTINATION(args);
}
bool Flash::read(args)
{
DELEGATE_DESTINATION(args);
}
凡
void Flash::init()
bool Flash::write(args)
bool Flash::read(args)
是相同的嵌入式項目實施的人的人。在測試文件中,我只是將調用中繼到假實現。我知道,一種可能的解決方案是已經在不使用中繼的假類中包含簽名和實現。
我很難搞清楚這個宏。我想是這樣的:
#define FAKE_PREFIX fakes::device::Flash::
#define DELEGATE_DESTINATION FAKE_PREFIX##__FUNCTION__
它擴展到FAKE_PREFIX__FUNCTION__
那好吧經歷C Preprocessor, Stringify the result of a macro 我只能得到假貨到位後展開。
我的目標是能有像
fakes::device::Flash::init
等爲閱讀和寫結果。
你可以使用內聯名字空間 –
@GuillaumeRacicot你能給我一個例子,你有什麼想法。我檢查出來試了一下,但沒有得到任何簡明的結果......謝謝。 – arapEST
我喜歡,但不幸的是我的內聯命名空間的經驗是有限的。我只知道這裏是爲了「默認」選擇一個嵌套的命名空間。 –