On Wed, 22 Jul 2020 10:05:09 +0100 "Burakov, Anatoly" <anatoly.bura...@intel.com> wrote:
> On 20-Jul-20 7:51 PM, Stephen Hemminger wrote: > > On Mon, 20 Jul 2020 13:32:27 +0100 > > "Burakov, Anatoly" <anatoly.bura...@intel.com> wrote: > > > >> On 18-Jul-20 3:22 AM, Stephen Hemminger wrote: > >>> On Fri, 17 Jul 2020 16:21:37 +0100 > >>> "Burakov, Anatoly" <anatoly.bura...@intel.com> wrote: > >>> > >>>> On 16-Jul-20 11:04 PM, Stephen Hemminger wrote: > >>>>> On Thu, 16 Jul 2020 14:41:41 +0100 > >>>>> "Burakov, Anatoly" <anatoly.bura...@intel.com> wrote: > >>>>> > >>>>>> On 15-Jul-20 9:29 PM, Stephen Hemminger wrote: > >>>>>>> On Wed, 15 Jul 2020 14:28:17 +0100 > >>>>>>> "Burakov, Anatoly" <anatoly.bura...@intel.com> wrote: > >>>>>>> > >>>>>>>>> -#define SKIP_MASTER SKIP_INITIAL > >>>>>>>>> -#define CALL_MASTER CALL_INITIAL > >>>>>>>>> +#define SKIP_MASTER _Pragma("GCC warning \"'SKIP_MASTER' is > >>>>>>>>> deprecated\"") SKIP_INITIAL > >>>>>>>>> +#define CALL_MASTER _Pragma("GCC warning \"'CALL_MASTER' is > >>>>>>>>> deprecated\"") CALL_INITIAL > >>>>>>>> > >>>>>>>> Presumably this is a generic header, should we introduce GCC-specific > >>>>>>>> things there? > >>>>>>> > >>>>>>> It works with Clang as well. Likely ICC but don't have that. > >>>>>>> > >>>>>> > >>>>>> What about MSVC? > >>>>>> > >>>>> > >>>>> _Pragma is C99 standard so MSVC know it. > >>>>> MSVC should ignore any pragman it doesn't understand. > >>>>> > >>>>> There is a better pragma for deprecating keywords in MSVC, but GCC and > >>>>> Clang don't > >>>>> understand it. > >>>>> > >>>> > >>>> Deprecating macros sounds like something we might want to do in the > >>>> future, can't we put some macro into rte_common.h to address this? e.g. > >>>> something like > >>>> > >>>> #ifdef MSVC > >>>> #define rte_deprecated_macro _msvc_pragma_whatever() > >>>> #else > >>>> #define rte_deprecated_macro _Pragma("GCC warning ...") > >>>> #endif > >>>> > >>>> and use this macro here? > >>> > >>> It gets hard to do macro in a macro, > >>> > >> > >> I don't have a strong opinion on this, but IMO it's certainly better > >> than having a compiler-specific things in an API header file :) > >> > > > > I was hoping for macro volunteer? > > > > Something like: > > #define RTE_DEPRECATED(foo) ... > > > > Oh, sure, apologies for not picking up on that :D > > A bit on the ugly side, but should work: > > #define __rte_deprecated_macro(val) (_Pragma("GCC warning \"'" #val "'\" > is deprecated\"") (val)) > > To be used as: > > #define NEW __rte_deprecated_macro(OLD) > > (I feel there could be confusion between __rte_deprecated and > RTE_DEPRECATED, so both for consistency and clarity, i believe > "__rte_deprecated_macro" would be a better name - however, no strong > opinion, RTE_DEPRECATED is fine by me as well) > I would prefer to keep to uppercase for macros. Will try it in V2