Две вещи:
1) Анализатор Doxygen не «видит» «IN» в doNothing (поскольку он удаляется на этапе предварительной обработки), поэтому \ fn не должен включать его: const char* doNothing(const char* s)
. Кстати, в этом \ fn нет необходимости: Doxygen автоматически связывает комментарий, если он находится непосредственно перед документированным объектом.
2) Я не знаю, во что расширяется __SXC_FUNCTION_ATTRIBUTE, но, если это что-то похожее на __MYLIB_FUNCTION_ATTRIBUTE, это, вероятно, смущает Doxygen. В качестве обходного пути вы можете либо ничего не определять в этих макросах в разделе PREDEFINED файла конфигурации Doxygen, либо условно определять их в источниках, например:
#ifdef DOXYGEN
// Doxygen does not grok the normal definition of this
#define __MYLIB_FUNCTION_ATTRIBUTE(...)
#else
#define __MYLIB_FUNCTION_ATTRIBUTE(...) __attribute__(__VA_ARGS__)
#endif
и поместите PREDEFINED = DOXYGEN в файл конфигурации.