mmoeller - 2016-08-17

Dear all,

I run into the following problem documenting my code with doxygen.
Large parts of the code are created using preprocessor macros like this

/// Helper macro for generating selectors for specialialized
/// implementations of element-wise binary operations; generic
/// implementation follows below
#define FDBB_GENERATE_BINARY_ELEMENTOPERATION_OVERLOADS(OPNAME)       \
    /** @brief                                                          \
        Selector for (specialized) implementation of                      \
        fdbb::internal::elem_##OPNAME##<A,B>(A&& a, B&& b) function       \
    */                                                                  \
    template<typename A, typename B, typename = void>                   \
    struct get_elem_##OPNAME##_impl : public std::integral_constant<EnumETL, EnumETL::GENERIC>{};

FDBB_GENERATE_BINARY_ELEMENTOPERATION_OVERLOADS(mul)
FDBB_GENERATE_BINARY_ELEMENTOPERATION_OVERLOADS(div)
FDBB_GENERATE_BINARY_ELEMENTOPERATION_OVERLOADS(pow)

#undef FDBB_GENERATE_BINARY_ELEMENTOPERATION_OVERLOADS

Running doxygen (v1.8.11) with the following configuration of the preprocessor

ENABLE_PREPROCESSING   = YES
MACRO_EXPANSION        = YES
EXPAND_ONLY_PREDEF     = NO
SEARCH_INCLUDES        = YES
INCLUDE_PATH           =
INCLUDE_FILE_PATTERNS  =
PREDEFINED             =
EXPAND_AS_DEFINED      =
SKIP_FUNCTION_MACROS   = YES

produces the following output (html):

struct      get_elem_mul_impl
    \ Selector for (specialized) implementation of \ fdbb::internal::elem_mul<A,B>(A&& a, B&& b) function \ More...

Obviously, the backslash that is needed for multiline preprocessor macros is included in the documentation.
Any help on how to configure doxygen and/or modify the documentation to prevent the backslashes from being included into the documentation is appreciated.

Best regards,
Matthias