extern se suele usar en las cabeceras (.h) para compartir un simbolo entre modulos
El extern ahi no te sirve de nada, sacandolo tendras un puntero a char y su ambito sera todo el modulo.
Esto está mal:Código: Cporque tú lo que quieres es un puntero a un array de punteros, esto es:
char *cadena; Código: C
char *cadena[]; //O también: char **cadena;