爲了儘可能在Visual Studio下C/C++棄用聲明的對象,則有三種解決方法:差分
#pragma deprecated(X)
__pragma(deprecated(X))
__declspec(deprecated(X))
前兩個是相同的,但只有第二個可以在宏內使用;我已經把第一個唯一的完整性。第三個似乎是開發社區中使用最多的。
我想知道最後兩個之間有什麼區別。根據MSDN here和here的文檔,我知道沒有區別。在這種情況下奇怪的是,根據您使用的是什麼提出了不同的警告代碼:C4995爲pragma-case,C4996爲declspec-case。
因此,有人知道是否有實際差異(任何微小的),或爲什麼這些指令不會引發相同的警告代碼?
大型項目的#pragma縮放比例很差,因爲它沒有附加到您要棄用的特定函數。意外匹配是一種風險,特別是在C++名稱空間中。 __declspec沒有這樣的問題,它應該是你的偏好。 – 2014-10-17 16:48:53