2013-03-19 60 views
4

在Visual C++中是否有任何等效的__BASE_FILE__?我想通過VC++知道當前正在編譯的文件的名稱msvc的等效於gcc的__BASE_FILE__

注:__FILE__擴展到當前文件,例如,它可能是#include之一。


從GCC的doc:

__BASE_FILE__

此宏擴展到主輸入文件的名稱,在C字符串常量的形式。這是調用C編譯器時指定爲參數的源文件。

+0

我通常能夠猜測輸出中的哪個源文件。我假設你只需要找到編譯器警告和/或錯誤的根源。在Configuration Properties \ C/C++ \ Advanced中的項目屬性中是Show Includes的選項。當你知道源文件時,它也可以在文件屬性中設置。 – John 2013-03-19 20:22:30

+0

@John,不,我正在爲嵌入式設備構建自定義內存泄漏檢測器(通過爲#define new new(__ FILE__,__LINE __)''定義過多)。我現在面臨着'std :: allocator'和朋友的問題 - 他們是''新''影子文件/使用行的包裝。因此,我決定嘗試綁定到翻譯單元的名稱,所以至少要知道搜索的初始方向。 – 2013-03-19 21:19:38

+4

你可以手動定義__BASE_FILE__。嘗試將__BASE_FILE __ =%(Filename)添加到預處理器在項目屬性中定義的位置。 – John 2013-03-20 18:49:10

回答

4

感謝John的評論,這裏是一個解決辦法。如果您只是簡單地輸入__BASE_FILE__=%(Filename),則不會生成文字字符串。所以把它放在雙引號之間;由於%(Filename)沒有它,我還添加了擴展名。

__BASE_FILE__="%(Filename)%(Extension)" 

該行必須寫入項目屬性頁的預處理器頁面。