日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]在KEIL C中,有多個源文件使用到全局變量時,可以在一個源文件中定義全局變量,在另外的源文件中用extern 聲明該變量,說明該變量定義在別的文件中,將其作用域擴展到此文件。例如:有以下兩個源文件test1.c,test2.

在KEIL C中,有多個源文件使用到全局變量時,可以在一個源文件中定義全局變量,在另外的源文件中用extern 聲明該變量,說明該變量定義在別的文件中,將其作用域擴展到此文件。


例如:有以下兩個源文件test1.c,test2.c



//test1.c

char aaa; //定義aaa


func1()

{

char bbb;

aaa = bbb;

}


//……




//test2.c


extern char aaa; //把aaa的作用域擴展到此


func2()

{

char ccc;

aaa =ccc;

}


//……



  如果還有其他文件要用到aaa,用法同test2.c,使用extern char aaa;語句將aaa的作用域擴展到此,然后就可以使用它。這里要特別注意的是:在使用extern時,不要忘了變量的類型,也就是上面例子變量aaa的修飾符char,不然結果就不是你想要的結果了,aaa的值將不可預料。



  本來我想嘗試把全局變量定義到頭文件里面的,可是屢試不爽,編譯器老是報重定義的錯,還舉上面的例子,具體如下:


復制代碼

//test1.h

#ifndef __TEST1_H__

#define __TEST1_H__


char aaa; //在test1.c的頭文件中定義aaa;


func1();


#endif


//test1.c

#include “test1.h”


func1() //在func1中給aaa賦值

{

char bbb;

aaa = bbb;

}



//////////////////////////////////////////////////////////////


//test2.h

#ifndef __TEST2_H__

#define __TEST2_H__


extern char aaa; //在test2.c的頭文件中聲明aaa為外部變量


func2();


#endif


//test2.c

#include “test1.h” //包括test1.h

#include “test2.h”


func2()

{

char ccc;

aaa =ccc;

}


可是編譯器總是報aaa重定義的錯,經(jīng)過改正,編譯通過,修改如下:


//test1.h

#ifndef __TEST1_H__

#define __TEST1_H__


extern char aaa; //在test1.c的頭文件中聲明外部變量aaa;


func1();


#endif


//test1.c

#include “test1.h”


char aaa; //在test1.c中定義aaa;


func1() //在func1中給aaa賦值

{

char bbb;

aaa = bbb;

}

//////////////////////////////////////////////////////////////


//test2.h

#ifndef __TEST2_H__

#define __TEST2_H__


func2();


#endif


//test2.c

#include “test1.h” //包括test1.h

#include “test2.h”


func2()

{

char ccc;

aaa =ccc;

}

也就是說,只要在使用的源文件中定義全局變量,在對應頭文件中聲明該全局變量為外部變量,即該變量允許外部使用,在其他要使用該變量的源文件中包括該頭文件即可。


本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉