现在的位置: 首页 > 综合 > 正文

extern声明的使用心得

2013年05月09日 ⁄ 综合 ⁄ 共 797字 ⁄ 字号 评论关闭

使用extern声明时,需要注意点,否则,编译会出错,特别是在一个文件中定义,在另一

个文件中声明的情况下。

 

 说下在一个文件中定义,在另一个文件中声明的情况,我是这种情况下出错过。此外,也

将说下结构体变量作为函数参数的情况。

 

一、extern的使用事项:

 

在ADE78xx.h文件中定义了数据结构类型:ADE7878_Reg,在ADE78xx_DATA.h

中用这个数据结构定义了一些变量。然后想在ADE78xx_DATA_extern.h文件中对这些变量进行声明,好让其它程序文件可以引用这些变量。但是在ADE78xx_DATA_extern.h文件中由于没有包含ADE78xx_DATA.h文件,所以编译出错,把这个文件包含进去就编译OK了。

 

也许我说的不够详细,引用网友一段话做解释:

1. extern 变量; 一般用于共享数据。 
#结构放在1.h 
struct Step 
{... 

#在文件XXX.h / XXX.cpp中使用Step 
直接可以使用 Step结构. 
如果你在1.cpp中定义了变量struct Step g_Step,可以在XXX.h/XXX.cpp使用 extern struct Step g_Step;意思是在XXX中共享该结构数据(需要在XXX中包括1.h)。 
2. extern 函数; 说白了就是告诉编译器这个函数可能在别的源文件里定义. 
3. extern "C" XX; 就是C兼容了。

 

 

此外,如果结构体变量定义在.h文件中,需要有一次定义,即需要在某个.c/.cpp文件中包

含这个有结构体变量定义的.h文件。

 

二、结构体变量作为函数参数:

整个结构体作函数参数,必须保证实参与形参的类型相同,实际上是将实参结构体成员值

对应传递给形参结构体成员。数组传递的是首地址。

 

 


虽然结构体能整体作函数参数,但要将全部成员值一个一个传递,开销比较大。在结构体

成员较多的情况下,用指针作函数参数比较好。

抱歉!评论已关闭.