Da la sensación de que ya lo tenías y por algún lado te has equivocado y has empezado a liarte sólo
Es casi como lo tenías, lo que pasa es que has de declarar (o declarar e implementar) primero la función listar().
Por otro lado, en la función ha aparecido un objeto o struct del tipo "lislibro" que luego es el que pretendes retornar, pero ese struct no está definido.
En resumen, que casi lo tenías.
Te pongo el ejemplo tuyo corregido:
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLIBROS 200
#define MAXCAD 256
typedef char cadena[MAXCAD];
typedef struct
{
int codigo;
cadena nombre;
} libro;
libro listar();
int main(int argc, char *argv[])
{
libro lib[MAXLIBROS];
lib[0] = listar();
return 0;
}
libro listar()
{
libro l;
int i=100;
l.codigo = i;
return l;
}