• Nathan Scott's avatar
    Annotate module API functions in redismodule.h for use with -fno-common (#6900) · 2c0c5a80
    Nathan Scott authored
    
    
    In order to keep the redismodule.h self-contained but still usable with
    gcc v10 and later, annotate each API function tentative definition with
    the __common__ attribute.  This avoids the 'multiple definition' errors
    modules will otherwise see for all API functions at link time.
    
    Further details at gcc.gnu.org/gcc-10/porting_to.html
    
    Turn the existing __attribute__ ((unused)), ((__common__)) and ((print))
    annotations into conditional macros for any compilers not accepting this
    syntax.  These macros only expand to API annotations under gcc.
    
    Provide a pre- and post- macro for every API function, so that they can
    be defined differently by the file that includes redismodule.h.
    
    Removing REDISMODULE_API_FUNC in the interest of keeping the function
    declarations readable.
    Co-authored-by: default avatarYossi Gottlieb <yossigo@gmail.com>
    Co-authored-by: default avatarOran Agra <oran@redislabs.com>
    (cherry picked from commit 11cd983d)
    2c0c5a80
redismodule.h 55.6 KB