##沒有躲過的坑--deprecated關鍵字
最近兩個被一個問題搞的暈暈乎乎,一直把焦點關注在 EXPRESSION SFINAE。
因為對我來說,EXPRESSION SFINAE也是完全新鮮的內容,有時間也發個關于這個特性的博客。
經歷了一番周折,下載最新的VS2015,使用低版本的編譯器,都未能解決問題。最后關鍵字deprecated浮出水面,哎,自慚形穢!
**利用 deprecated 聲明,您可以將函數重載的特殊形式指定為已棄用,而雜注形式適用于函數名稱的所有重載形式。**
**利用 deprecated 聲明,您可以指定在編譯時顯示的消息。 該消息的文本可以來自宏。**
**只能使用 deprecated 雜注將宏標記為已棄用。**
下面的示例演示在使用已棄用的函數時,如何將函數標記為已棄用以及如何指定在編譯時將顯示的消息。
~~~
// deprecated.cpp
#define MY_TEXT "function is deprecated"
void func1(void) {}
__declspec(deprecated) void func1(int) {}
_
_declspec(deprecated("** this is a deprecated function **")) void func2(int) {}
__declspec(deprecated(MY_TEXT)) void func3(int) {}
int main() {
func1();
func1(1); // error: 'func1': 被聲明為已否決
func2(1); // error
func3(1); // error
}
~~~
下面的示例演示在使用已棄用的類時,如何將類標記為已棄用以及如何指定在編譯時將顯示的消息。
~~~
// deprecate_class.cpp
// compile with: /W3
struct __declspec(deprecated) X {
void f(){}
};
struct __declspec(deprecated("** X2 is deprecated **")) X2 {
void f(){}
};
int main() {
X x; // error
X2 x2; // error
}
~~~
The deprecated __declspec modifier allows you to specify deprecated status for particular forms of overloaded functions.
- 前言
- deprecated關鍵字
- 指針(內存泄露)
- 頭文件相互包含(Compiler error C2653: not a class or namespace name)
- 獲取一張圖片的width和height
- This function or variable may be unsafe.
- 智能指針陷阱
- wstring與string的轉換
- windows下chrome瀏覽器插件不能安裝
- 重定義關鍵字
- 正確釋放vector的內存
- 獲取設備環境HDC
- 抽象類不能實例化對象(但是你明明定義的不是抽象類)
- 重載賦值運算符的自我賦值
- 程序中的變量未初始化
- 成對使用new和delete時要采取相同的形式
- 意想不到的除數為零
- map的初始化(插入數據)
- 正則表達式截取字符串
- 捕獲窗口之外的鼠標消息(鉤子還是??)
- 類中的靜態成員變量(static or const static)
- 有if就要有else(一定成對)
- map查找結果處理
- 使用using namespace std的壞習慣
- new一個指針數組、以及創建動態二維數組
- 使用太多的全局變量
- 沒有及時break出for循環
- vector使用erase后迭代器變成野指針
- C++函數的默認參數(重新定義默認參數)
- 0xC0000005: 讀取位置 xxx時發生訪問沖突
- std::string初始化、最快速判斷字符串為空
- 你開發的軟件安裝在C盤Program Files (x86)下產生的異常