Possible Duplicate:
Creating C macro with ## and LINE (token concatenation with positioning macro)創建宏__LINE__使用不同的變量名
我試圖使用__LINE__
宏來產生不同的變量名。我有一個名爲Benchmark的範圍基準類(位於utils名稱空間中),它的構造函數接受一個字符串。下面是我創建的宏定義:
#define BENCHMARK_SCOPE utils::Benchmark bm##__LINE__(std::string(__FUNCTION__))
不幸的是這將導致以下錯誤:
<some_file_name>(59): error C2374: 'bm__LINE__' : redefinition; multiple initialization
這使我得出結論的__LINE__
宏不會得到擴展。我根據this post創建了我的macross。你有什麼想法爲什麼__LINE__
沒有擴大?
編輯:可能編譯器信息也是相關的。我使用Visual Studio 2010中
嗯。你嘗試過'bm ## __LINE__'(有空格)嗎? – Cameron
@Cameron我對你的評論感謝,但沒有任何改變。 –
好的,再試一次:'#define _BENCHMARK_SCOPE(line)utils :: Benchmark bm ## line(...'with'#define BENCHMARK_SCOPE _BENCHMARK_SCOPE(__ LINE __)' – Cameron