如何在C中声明带extern的指针?

时间:2011-02-06 16:47:55

标签: c pointers extern

我正在为微控制器编写C软件,编译器是Microchip MCC18。

出于测试目的,我编写了一个非常简单的程序如下:

.c文件

#include "x.h"

char *now_clock;

.h文件

extern char *now_clock;

使用上面的代码我得到语法错误,但我不知道出了什么问题。有什么帮助吗?

2 个答案:

答案 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。