我正在为微控制器编写C软件,编译器是Microchip MCC18。
出于测试目的,我编写了一个非常简单的程序如下:
#include "x.h"
char *now_clock;
extern char *now_clock;
使用上面的代码我得到语法错误,但我不知道出了什么问题。有什么帮助吗?
答案 0 :(得分:3)
显示的代码在编辑中似乎没有改变,在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
$
x.c中的代码显示correct style - 它包含声明变量的标头,以交叉检查变量的定义。您还可以在x.c中的定义中添加初始化程序而不会出现问题。
我的结论是你过度简化了你的例子并且在这个过程中丢失了问题。
答案 1 :(得分:0)
您不会在.c文件中声明extern char* now_clock
,这是您在.c中包含x.h所做的。删除#include "x.h"
,你会没事的。
仅在想要访问变量的.c文件中包含x.h。