2015-01-06 15 views
3

我有一個函數說void foo()。我自嘲是 老FUNC: -如何在已棄用的函數中添加字符串或消息

void foo()__attribute__ ((deprecated)); 

新FUNC: -

void FOO(); 

現在我想用這個舊函數一起添加一條消息,「使用了新的功能是FOO」可以看到編譯後的警告信息。

如何做到這一點。

+0

加上'-Wall'的屬性本身內部消息編譯器命令? –

+0

如果您滿意,請接受其中一個答案(投票櫃檯下面的勾號)。否則,更新問題。謝謝! –

回答

3

您可以使用[[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(); 
1

,你可以使用這個語法:

[[deprecated("Replaced by FOO, which has extra goodness")]] 
void foo(); 

備註您只能爲消息使用字符串文字。

3

您可以指定(因爲GCC 4.5)

void __attribute__ ((deprecated("the new function used is FOO"))) foo(); 

另外,您可以使用新的語法(C++ 14)

[[deprecated("the new function used is FOO")]] 
void foo(); 
相關問題