Significado de “char * _EXFUN (index, (const char *, int));”

Encontré esto como una proposición del eclipse idexer / intelisence como se llame. Y esto es todo:

char *_EXFUN(index,(const char *, int)); 

Primero parece una función que devuelve un puntero a un char, pero los parámetros (si es que es una función) me parecen bastante confusos. Cómo entrar en la lista de parámetros tenemos un paréntesis.

_EXFUN parece ser una macro utilizada en encabezados estándar en algunas plataformas, por ejemplo, aquí

 #ifndef _EXFUN # define _EXFUN(N,P) NP #endif 

Por lo tanto, char *_EXFUN(index,(const char *, int)); se expande a

 char * index(const char *, int) 

Este truco se realiza a veces para que el mismo encabezado pueda preprocesarse con _EXFUN configurado en otra cosa, por ejemplo, para inspeccionar firmas de funciones o para declarar símbolos exportados en una biblioteca.