Indicates that the name or entity declared with this attribute isdeprecated, that is, the use is allowed, but discouraged for some reason.
Contents |
[[deprecated]][[__deprecated__]] | (1) | ||||||||
[[deprecated(string-literal)]][[__deprecated__(string-literal)]] | (2) | ||||||||
| string-literal | - | text that could be used to explain the rationale for deprecation and/or to suggest a replacing entity |
Indicates that the use of the name or entity declared with this attribute is allowed, but discouraged for some reason. Compilers typically issue warnings on such uses. Thestring-literal, if specified, is usually included in the warnings.
This attribute is allowed in declarations of the following names or entities:
A name declared non-deprecated may be redeclared deprecated. A name declared deprecated cannot be un-deprecated by redeclaring it without this attribute.
#include <stdio.h> [[deprecated]]void TriassicPeriod(void){puts("Triassic Period: [251.9 - 208.5] million years ago.");} [[deprecated("Use NeogenePeriod() instead.")]]void JurassicPeriod(void){puts("Jurassic Period: [201.3 - 152.1] million years ago.");} [[deprecated("Use calcSomethingDifferently(int).")]]int calcSomething(int x){return x*2;} int main(void){ TriassicPeriod(); JurassicPeriod();}
Possible output:
Triassic Period: [251.9 - 208.5] million years ago.Jurassic Period: [201.3 - 152.1] million years ago. prog.c:23:5: warning: 'TriassicPeriod' is deprecated [-Wdeprecated-declarations] TriassicPeriod(); ^prog.c:3:3: note: 'TriassicPeriod' has been explicitly marked deprecated here[[deprecated]] ^prog.c:24:5: warning: 'JurassicPeriod' is deprecated: Use NeogenePeriod() instead. [-Wdeprecated-declarations] JurassicPeriod(); ^prog.c:9:3: note: 'JurassicPeriod' has been explicitly marked deprecated here[[deprecated("Use NeogenePeriod() instead.")]] ^2 warnings generated.C++ documentation fordeprecated |