Originariamente inviato da ramy89
Pare che hai dichiarato daytab due volte, posta il codice intero.
Avevo pensato la stessa cosa, ma l'ho dichiarato solo una volta
Ecco qua comunque
codice:
#include <stdio.h>
#include <stdlib.h>
#define DAY_IN_YEAR 365
#define MONTH_IN_YEAR 12
int day_of_year(int year, int month, int day);
void day_of_month(int year, int day, int *pmonth, int *pday);
char *month_name(int n);
int main()
{
int year = 2012;
int monthday = 30;
int month = 3;
int yearday = 89;
printf("It is the %d day of year\n", day_of_year(year, month, monthday));
}
static char **daytab;
daytab=(char**)malloc(2*sizeof(char*));
daytab[0]=(char*)(char[]){0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
daytab[1]=(char*)(char[]){0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
Come vedi ho cancellato le funzioni nascondendole come commenti per vedere se funzionava il codice da te proposto 
In pratica, a parte il main, c'è solo il tuo codice visibile nel programma.
EDIT: anche cancellando il main il risultato è lo stesso.