2014-02-16 62 views
0

我剛剛開始爲Windows Phone開發,並且我遇到了一個需要維護的現有代碼。這是一個來自日誌庫的宏,用於現有代碼的很多地方。將C++日誌源代碼片段轉換爲Windows Phone C++/CX

這是宏:

#define LOG_FORMAT_FUNCTION(fmtarg, firstvararg) __attribute__((__format__ (__printf__, fmtarg, firstvararg))) 

而這是不能使用上面的宏與誤差的方法定義「{預期」(在德國「錯誤:居wurde EIN‘{’erwartet」 ):

void LogTrace_s(const char* category, const char* format, ...) LOG_FORMAT_FUNCTION(2, 3); 

你能幫我擺脫這個錯誤嗎?我也想知道宏觀究竟究竟做了些什麼。

編輯︰後rading這here我現在明白,這個宏是錯誤檢查格式化的字符串很好。現在我知道了,我更需要它了。但我仍然不知道如何將其轉換爲MS C++。

+0

這是隻適用於其他編譯器,而不是微軟的語法。只是省略它。並注意你不使用C++/CLI的手機。你對使用的語言和編譯器都很困惑,而不是一個好地方。 –

+0

嗯,我是新來的,因爲我對WP的發展和所有令人困惑的零零碎碎的東西說。我的意思是C++/CX。是的,上面的代碼片段在GNU C++ for Andoid上編譯(通過JNI)。但不,我不能忽略它,因爲我說它被廣泛使用的3萬行C++代碼)。我需要將它作爲日誌的常見頭文件的一部分進行編譯 - 日誌本身可以在C#中進行封裝和完成。 – benjist

+0

是不是__attribute__ GCC特定的擴展名?您可以將其視爲MSVC中的__declspec。在這裏回答了類似的問題:http://social.msdn.microsoft.com/Forums/vstudio/en-US/483024f8-4d35-4cfc-ab01-27f37b0b0379/source-for-attribute?forum=vcgeneral – alekseyk

回答

0

是的,你可以只是省略它。使用

#if _MSVC_VER 
#define LOG_FORMAT_FUNCTION(fmtarg, firstvararg) 
#endif 

這是註釋功能與額外的信息,以幫助海灣合作委員會給你更好的警告。它不會以任何方式改變代碼的行爲。