我有一個函數說void foo()
。我自嘲是 老FUNC: -如何在已棄用的函數中添加字符串或消息
void foo()__attribute__ ((deprecated));
新FUNC: -
void FOO();
現在我想用這個舊函數一起添加一條消息,「使用了新的功能是FOO
」可以看到編譯後的警告信息。
如何做到這一點。
我有一個函數說void foo()
。我自嘲是 老FUNC: -如何在已棄用的函數中添加字符串或消息
void foo()__attribute__ ((deprecated));
新FUNC: -
void FOO();
現在我想用這個舊函數一起添加一條消息,「使用了新的功能是FOO
」可以看到編譯後的警告信息。
如何做到這一點。
您可以使用[[deprecated(msg)]]
屬性,這也是一種標準方式(自C++ 14以來)。
[[deprecated("do not use")]]
void f()
{}
int main(){
f();
}
clang++
:
g++
warning: 'f' is deprecated: do not use [-Wdeprecated-declarations]
f();
^
note: 'f' has been explicitly marked deprecated here
void f()
^
1 warning generated.
:如果您使用C++ 14
In function ‘int main()’:
warning: ‘void f()’ is deprecated (declared at test.cpp:2): do not use [-Wdeprecated-declarations]
f();
^
warning: ‘void f()’ is deprecated (declared at test.cpp:2): do not use [-Wdeprecated-declarations]
f();
,你可以使用這個語法:
[[deprecated("Replaced by FOO, which has extra goodness")]]
void foo();
備註您只能爲消息使用字符串文字。
您可以指定(因爲GCC 4.5)
void __attribute__ ((deprecated("the new function used is FOO"))) foo();
另外,您可以使用新的語法(C++ 14)
[[deprecated("the new function used is FOO")]]
void foo();
加上'-Wall'的屬性本身內部消息編譯器命令? –
如果您滿意,請接受其中一個答案(投票櫃檯下面的勾號)。否則,更新問題。謝謝! –