亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

頭文件不宜定義變量的原因全面解析

2020-01-26 15:51:42
字體:
來源:轉載
供稿:網友

test-1.0使用#ifndef只是防止了頭文件被重復包含(其實本例中只有一個頭件,不會存在重復包含的問題),但是無法防止變量被重復定義。

復制代碼 代碼如下:

# vi test.c
-------------------------------
#include <stdio.h>
#include "test.h"

extern i;
extern void test1();
extern void test2();

int main()
{
   test1();
   printf("ok/n");
   test2();
   printf("%d/n",i);
   return 0;
}


# vi test.h
-------------------------------
#ifndef _TEST_H_
#define _TEST_H_

char add1[] = "www.shellbox.cn/n";
char add2[] = "www.scriptbox.cn/n";
int i = 10;
void test1();
void test2();

#endif

# vi test1.c
-------------------------------
#include <stdio.h>
#include "test.h"

extern char add1[];

void test1()
{
   printf(add1);
}

# vi test2.c
-------------------------------
#include <stdio.h>
#include "test.h"

extern char add2[];
extern i;

void test2()
{
   printf(add2);
   for (; i > 0; i--)
       printf("%d-", i);
}


復制代碼 代碼如下:

# Makefile
-------------------------------
test:    test.o test1.o test2.o
test1.o: test1.c
test2.o: test2.c
clean:
   rm test test.o test1.o test2.o

錯誤:
test-1.0編譯后會出現"multiple definition of"錯誤。

錯誤分析:
由于工程中的每個.c文件都是獨立的解釋的,即使頭文件有
#ifndef _TEST_H_
#define _TEST_H_
....
#enfif
在其他文件中只要包含了global.h就會獨立的解釋,然后每個.c文件生成獨立的標示符。在編譯器鏈接時,就會將工程中所有的符號整合在一起,由于文件中有重名變量,于是就出現了重復定義的錯誤。

解決方法
在.c文件中聲明變量,然后建一個頭文件(.h文件)在所有的變量聲明前加上extern,注意這里不要對變量進行的初始化。然后在其他需要使用全局變量的.c文件中包含.h文件。編譯器會為.c生成目標文件,然后鏈接時,如果該.c文件使用了全局變量,鏈接器就會鏈接到此.c文件 。

test-2.0

復制代碼 代碼如下:

# vi test.c
-------------------------------
#include <stdio.h>
#include "test.h"

int i = 10;
char add1[] = "www.shellbox.cn/n";
char add2[] = "www.scriptbox.cn/n";
extern void test1();
extern void test2();

int main()
{
   test1();
   printf("ok/n");
   test2();
   printf("%d/n",i);
   return 0;
}


# vi test.h
-------------------------------
#ifndef _TEST_H_
#define _TEST_H_

extern i;
extern char add1[];
extern char add2[];

void test1();
void test2();

#endif

# vi test1.c
-------------------------------
#include <stdio.h>
#include "test.h"

void test1()
{
   printf(add1);
}

# vi test2.c
-------------------------------
#include <stdio.h>
#include "test.h"

void test2()
{
   printf(add2);
   for (; i > 0; i--)
       printf("%d-", i);
}


個人認為解決此類問題有幾種辦法:
1.在.cpp里定義變量,在其他調用處使用extern
2.在頭文件里使用宏定義

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久亚洲精品国产| 日韩视频免费大全中文字幕| 欧美激情奇米色| 国产精品久在线观看| 国产欧美韩国高清| 国产精品91久久| 91精品久久久久久久久| 国产色综合天天综合网| 日韩在线一区二区三区免费视频| 国产成人在线一区| 精品久久久久久中文字幕| 5252色成人免费视频| 97视频国产在线| 国产精品白嫩美女在线观看| 26uuu日韩精品一区二区| 97av视频在线| 91高清免费在线观看| 日本精品久久久久久久| 亚洲一区二区久久| 国产午夜精品一区理论片飘花| 精品福利在线看| 欧美裸体xxxxx| 欧美性极品少妇精品网站| 亚洲深夜福利网站| 影音先锋日韩有码| 日韩国产在线播放| 国产精品久久视频| 国产成人中文字幕| 精品视频久久久久久| 亚洲综合社区网| 国产精品爽爽爽| 久久久精品久久久| 亚洲va欧美va在线观看| 亚洲人成电影网站色| 91麻豆桃色免费看| 69久久夜色精品国产7777| 久久久久久久一| 亚洲综合日韩在线| 日韩高清电影好看的电视剧电影| 亚洲精品黄网在线观看| 欧美三级欧美成人高清www| 久久国产精彩视频| 国产精品国内视频| 国产aaa精品| 超碰97人人做人人爱少妇| 青青久久av北条麻妃海外网| 久久精品最新地址| 日韩高清a**址| 亚洲久久久久久久久久| 日本一区二区三区四区视频| 亚洲色图第三页| 国产精品精品久久久| 久久777国产线看观看精品| 国产欧美婷婷中文| 日韩三级成人av网| 国产精品中文久久久久久久| 色狠狠av一区二区三区香蕉蜜桃| 亚洲激情视频在线| 中文字幕日本欧美| 亚洲最新av在线| 欧洲一区二区视频| 中文字幕免费精品一区高清| 欧美一区二区大胆人体摄影专业网站| 国产va免费精品高清在线观看| 国产成人精品久久久| 国产免费一区二区三区香蕉精| 欧美成人中文字幕在线| 久久久噜噜噜久久| 91精品国产综合久久香蕉最新版| 久久精品国产综合| 另类天堂视频在线观看| 欧美性视频在线| 色综合91久久精品中文字幕| 亚洲国产成人一区| 欧美一级免费视频| 欧美亚洲在线观看| 78m国产成人精品视频| 成人精品在线视频| 久久影院中文字幕| 中文字幕日韩av电影| 97婷婷大伊香蕉精品视频| 国产精品视频男人的天堂| 国产亚洲精品激情久久| 午夜精品福利在线观看| 亚洲精品国产精品久久清纯直播| 欧美黑人性视频| 精品视频—区二区三区免费| 91成人在线播放| 欧美视频在线视频| 91色精品视频在线| 亚洲国产天堂久久国产91| 揄拍成人国产精品视频| 中文字幕日本精品| 国产精品日韩精品| 色偷偷偷综合中文字幕;dd| 国产中文欧美精品| 日韩大片免费观看视频播放| 亚洲男人天堂2023| 欧美—级a级欧美特级ar全黄| 日韩视频―中文字幕| 亚洲伊人第一页| 亚洲激情在线观看| 久久99国产精品久久久久久久久| 日本久久亚洲电影| 91精品视频专区| 久久成人18免费网站| 国产精品入口免费视| 国产亚洲精品成人av久久ww| 国产激情999| 欧美国产日韩精品| 国产成人综合精品在线| 欧美日本中文字幕| 亚洲japanese制服美女| 欧美wwwxxxx| 最近2019中文字幕第三页视频| 国产日产亚洲精品| 在线观看日韩视频| 欧美主播福利视频| 国产精品一区电影| 91夜夜未满十八勿入爽爽影院| 久久九九热免费视频| 国产精品亚洲一区二区三区| 91久久精品日日躁夜夜躁国产| 欧美激情啊啊啊| 亚洲精品影视在线观看| 久久精品在线视频| 91久久精品视频| 日韩中文字幕在线视频| 伊人伊成久久人综合网小说| 亚洲日韩中文字幕| 中文字幕亚洲二区| 91精品久久久久久久久青青| 国产精品久久久久久久久久尿| 亚洲a区在线视频| 亚洲欧洲在线播放| 欧美丰满老妇厨房牲生活| 精品久久久久久亚洲国产300| 97精品久久久中文字幕免费| 亚洲精品suv精品一区二区| 日本欧美中文字幕| 亚洲国产高清自拍| 国产98色在线| 在线成人中文字幕| 欧美精品videosex牲欧美| 亚洲人成77777在线观看网| 日韩欧美福利视频| 日韩大片免费观看视频播放| 91久久久亚洲精品| 国产精品久久久久久久久久三级| 中文字幕亚洲欧美日韩2019| 久久夜色精品国产欧美乱| 欧美日韩一区免费| 久久91精品国产91久久久| 日本精品免费一区二区三区| 国产精品美女在线| 日韩欧美aⅴ综合网站发布| 中文字幕亚洲国产| 777午夜精品福利在线观看| 欧美香蕉大胸在线视频观看| 国模精品视频一区二区| 精品夜色国产国偷在线| 91在线色戒在线| 日韩中文av在线| 久久久免费在线观看|