c++ mark enum value as deprecated?

后端 未结 8 1924
再見小時候
再見小時候 2020-12-30 23:41

Is it possible to mark an enum value as deprecated?

e.g.

enum MyEnum {
    firstvalue = 0
    secondvalue,
    thirdvalue, // deprecated
    fourthva         


        
8条回答
  •  不知归路
    2020-12-31 00:21

    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

提交回复
热议问题