Показанный код, который, кажется, не изменился при редактировании, корректно компилируется для меня на MacOS X 10.6.6 с GCC 4.5.2 под строгими предупреждениями - как и должно быть.
$ cat x.h
extern char *now_clock;
$ cat x.c
#include "x.h"
char *now_clock;
$ gcc -O -std=c99 -Wall -Wextra -pedantic -c x.c
$
Код в xc показывает правильный стиль - он включает в себя заголовок, который объявляет переменную для перекрестной проверки определения переменной.Вы также можете добавить инициализатор к определению в xc без проблем.
Я пришел к выводу, что вы упростили свой пример и потеряли проблему в процессе.