Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

c++ mark enum value as deprecated?

Tags:

Is it possible to mark an enum value as deprecated?

e.g.

enum MyEnum {     firstvalue = 0     secondvalue,     thirdvalue, // deprecated     fourthvalue }; 

A second prize solution would be to ifdef a MSVC and a GCC solution.

like image 961
moala Avatar asked Mar 30 '11 14:03

moala


1 Answers

you could do this:

enum MyEnum {     firstvalue = 0,     secondvalue,     thirdvalue, // deprecated     fourthvalue }; #pragma deprecated(thirdvalue) 

then when ever the variable is used, the compiler will output the following:

warning C4995: 'thirdvalue': name was marked as #pragma deprecated 

EDIT
This looks a bit hacky and i dont have a GCC compiler to confirm (could someone do that for me?) but it should work:

enum MyEnum {     firstvalue = 0,     secondvalue, #ifdef _MSC_VER     thirdvalue, #endif     fourthvalue = secondvalue + 2 };  #ifdef __GNUC__ __attribute__ ((deprecated)) const MyEnum thirdvalue = MyEnum(secondvalue + 1); #elif defined _MSC_VER #pragma deprecated(thirdvalue) #endif 

it's a combination of my answer and MSalters' answer

like image 198
Tom Avatar answered Sep 20 '22 16:09

Tom