当前位置: 技术问答>linux和unix
c中声明和定义问题!!!!
来源: 互联网 发布时间:2016-08-04
本文导语: 在data.h头文件中申明两个全局变量: extern int a; extern int b; 在data.c中定义该两个整形变量: #include "data.h" int a; int b; 然后在另外一个.c文件中使用该ab变量包含了头文件data.h 然后编译出错: expected ‘=’, ‘,’, ...
在data.h头文件中申明两个全局变量:
extern int a;
extern int b;
在data.c中定义该两个整形变量:
#include "data.h"
int a;
int b;
然后在另外一个.c文件中使用该ab变量包含了头文件data.h
然后编译出错:
expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
请教大家!
extern int a;
extern int b;
在data.c中定义该两个整形变量:
#include "data.h"
int a;
int b;
然后在另外一个.c文件中使用该ab变量包含了头文件data.h
然后编译出错:
expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
请教大家!
|
头文件中申明extern,其实只是为了告诉编译器:恩,我告诉你,这个函数是定义在别的文件中,不要大惊小怪的。
你别忘了,头文件也是一个文件,跟.c文件是分开的。
那么,真正起作用的是在.c文件中的那个extern.
extern之后的所哟地方都可以使用该函数。
如果你把函数调用卸载头文件中,就不会出错。
虽然头文件include后被扩展,但是并不是简单的想宏一样直接放进来,放进来之后,好想就是一体的。
不是这样的