Как объявить указатель с extern в C? - PullRequest
1 голос
/ 06 февраля 2011

Я пишу программное обеспечение на C для микроконтроллера, компилятор - Microchip MCC18.

Для целей тестирования я написал очень простую программу:

.c file

#include "x.h"

char *now_clock;

.h file

extern char *now_clock;

С приведенным выше кодом я получаю синтаксическую ошибку, но я не знаю, что не так.Любая помощь?

Ответы [ 2 ]

3 голосов
/ 06 февраля 2011

Показанный код, который, кажется, не изменился при редактировании, корректно компилируется для меня на 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 без проблем.

Я пришел к выводу, что вы упростили свой пример и потеряли проблему в процессе.

0 голосов
/ 06 февраля 2011

Вы не объявляете extern char* now_clock в файле .c, что вы делаете, включая xh в свой файл .c.Удалите #include "x.h", и все будет в порядке.

Включайте только xh в файлы .c, которые хотят получить доступ к переменной.

...