doxygen

Am I using SKIP_FUNCTION_MACROS correctly?


After having read the Doxygen documentation, I expected that setting ENABLE_PREPROCESSING = YES and SKIP_FUNCTION_MACROS = YES in my Doxygen configuration file made the following C MACRO to be not referenced.

/*! \file test_skip_macro_doxygen.h
 */
/*!
 * \brief DOXYGENIGNORESME
 */
#define DOXYGENIGNORESME(a) (do {} while 0)

Nevertheless, Doxygen emits the documentation in the section "Macros" and produces reference to it. Doxygen version: 1.9.1.

What am I getting wrong?


Solution

  • According to the documentation for SKIP_FUNCTION_MACROS (see: https://www.doxygen.nl/manual/config.html#cfg_skip_function_macros):

    If the SKIP_FUNCTION_MACROS tag is set to YES then Doxygen's preprocessor will remove all references to function-like macros that are alone on a line, have an all uppercase name, and do not end with a semicolon. Such function macros are typically used for boiler-plate code, and will confuse the parser if not removed.

    In other words the references are removed in the code, not the macro itself.

    To skip the symbol: EXCLUDE_SYMBOLS (see: https://www.doxygen.nl/manual/config.html#cfg_exclude_symbols):

    The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names (namespaces, classes, functions, etc.) that should be excluded from the output. The symbol name can be a fully qualified name, a word, or if the wildcard * is used, a substring. Examples: ANamespace, AClass, ANamespace::AClass, ANamespace::*Test

    So in this case : EXCLUDE_SYMBOLS = DOXYGENIGNORESME

    Edit Independent whether or not the macro is documented.