MLIB_IS_EMPTY fails on function macro accepting args

XMLWordPrintableJSON

    • Type: Improvement
    • Resolution: Unresolved
    • Priority: Unknown
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • None
    • C Drivers
    • None
    • None
    • None
    • None
    • None
    • None

      Example:

      #define macro_without_args() 123
      #define macro_with_args(a, b) a + b
      
      int x;
      x = MLIB_IS_EMPTY(nonmacro);           // OK.
      x = MLIB_IS_EMPTY(macro_without_args); // OK.
      x = MLIB_IS_EMPTY(macro_with_args);    // error: too few arguments provided to function-like macro invocation.
      

      This may risk breaking builds for users if existing macros are defined. Discovered when working on CDRIVER-4489 when trying to invoke:

      mlib_duration(1, min)
      

      min was defined as a macro accepting two arguments

            Assignee:
            Kevin Albertson
            Reporter:
            Kevin Albertson
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: