久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

C語言extern問題 不太明白請教下大家

查看數(shù): 1523 | 評論數(shù): 10 | 收藏 1
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2022-1-22 17:10

正文摘要:

本帖最后由 ty86391101 于 2022-1-22 18:46 編輯 這個是tftled.c 想問下 編譯的時候 這個數(shù)組和變量i 都需要加上 extern 才行, 為什么頭文件里,函數(shù)sum不需要前面加extern? (函數(shù)沒什么意義 隨便 ...

回復

ID:160500 發(fā)表于 2022-1-22 23:09
這個你要理解作用域的概念,看看書上怎么說的吧
ID:879809 發(fā)表于 2022-1-22 22:34
ty86391101 發(fā)表于 2022-1-22 22:06
嗯,我的矛盾點在于 你看啊

tftled.h這個頭文件里面 聲明的 變量和函數(shù)
  1. extern int i;
復制代碼

這是聲明一個變量;
  1. int sum(int, int);
復制代碼

這是聲明一個函數(shù);
  1. int i;
復制代碼

這是定義一個變量;
  1. int sum(int x,int y){
  2.   return x+y;
  3. }
復制代碼

這是定義一個函數(shù);

聲明可以在任何用到的文件里面寫,定義在整個工程里面只能寫一次。
話已經(jīng)說到這種程度還看不懂,我無能為力了。
ID:1000365 發(fā)表于 2022-1-22 22:06
發(fā)表于 2022-1-22 21:21
函數(shù)聲明只是聲明有這個東西,入口參數(shù)和出口參數(shù)都是什么樣子的,當然可以每個c文件里面聲明。

類似 ...

嗯,我的矛盾點在于 你看啊

tftled.h這個頭文件里面 聲明的 變量和函數(shù)

在main.c這個文件使用 包含了tftled.h頭文件(include"tftled.h")

那么 我在main.c這個文件里面 想用tftled.c里的變量 這個需要聲明extern int i;到這邊我都是知道。

那main.c要去用tftled.c里的函數(shù)的時候 不也得是extern u8 sum();聲明一下嗎?

他不加extern 光聲明u8 sum(u8 a,u8 b); 也能找到tftled.c里的函數(shù)。不得是extern u8 sum(u8 a,u8 b);嗎?
ID:879809 發(fā)表于 2022-1-22 21:23
補充一下,可以在多個c文件里面定義static int i;但是每個文件里面的i都是自己文件的,你永遠無法訪問其他c文件里面的i,只能訪問自己文件里面的那個。
ID:879809 發(fā)表于 2022-1-22 21:21
ty86391101 發(fā)表于 2022-1-22 21:08
是不是編譯器默認的每個函數(shù)都是extern類型的啊?
所以函數(shù)不用加extern啊?

函數(shù)聲明只是聲明有這個東西,入口參數(shù)和出口參數(shù)都是什么樣子的,當然可以每個c文件里面聲明。

類似函數(shù)聲明的變量的寫法是定義,定義這個變量,比如int i;是定義i這個int型變量,你要在多個c文件里面定義,那么連接的時候,連接器就不知道該用哪個i,就亂套了。

extern int i;才是變量聲明,聲明其他c文件定義的i變量。
ID:1000365 發(fā)表于 2022-1-22 21:08
發(fā)表于 2022-1-22 19:27
不加extern是定義變量,一個名字的全局變量在工程里面只能定義一次。加了extern是聲明變量,告訴c源碼別的 ...

是不是編譯器默認的每個函數(shù)都是extern類型的啊?
所以函數(shù)不用加extern啊?
ID:879809 發(fā)表于 2022-1-22 19:27
不加extern是定義變量,一個名字的全局變量在工程里面只能定義一次。加了extern是聲明變量,告訴c源碼別的文件定義了一個什么類型的變量,當然可以在除了定義這個變量的c文件以外的任意c文件里面聲明變量,不管用沒用到。

函數(shù)原型聲明,原理同上。所以不需要加extern。
ID:1000365 發(fā)表于 2022-1-22 18:42
188610329 發(fā)表于 2022-1-22 18:04
extern  是引用外部已經(jīng)聲明的變量
通常是在一個項目中引用另一個 C 文件聲明的變量,所以理論上這個 .h  ...

我修改一下哦,是沒給寫全  確實是別的函數(shù)去調(diào)用的
ID:908826 發(fā)表于 2022-1-22 18:33
沙發(fā)正解
ID:624769 發(fā)表于 2022-1-22 18:04
extern  是引用外部已經(jīng)聲明的變量
通常是在一個項目中引用另一個 C 文件聲明的變量,所以理論上這個 .h 文件應(yīng)該是被另一個 C文件 include 而不是被這個 C文件 include, 感覺上,這幾個文件,被不同的人修改過,而修改的人也是半吊子。

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕日韩欧美 | 福利视频一区二区 | 毛片av免费看| 日韩视频免费在线 | 日韩aⅴ在线观看 | 国产乱码精品一区二区三区中文 | 一色桃子av一区二区 | 日韩欧美在线视频一区 | 欧美精品第三页 | 亚洲精品久久嫩草网站秘色 | 亚洲+变态+欧美+另类+精品 | www亚洲精品 | 久久中文字幕一区 | 成人免费一区二区三区视频网站 | 精品国产欧美一区二区 | 日韩在线中文字幕 | 日韩在线看片 | 久久一区精品 | 在线观看国产www | 国产免费一区二区 | 2019精品手机国产品在线 | 久久久久久久一区二区三区 | 欧美一级视频在线观看 | 成人免费网站www网站高清 | 亚洲成人免费视频 | 国内精品视频免费观看 | 成人在线免费视频 | 狠狠操狠狠操 | 国产高潮好爽受不了了夜夜做 | 日本国产欧美 | 国产精品久久精品 | 成人日韩| 日韩精品久久久久 | 日本成年免费网站 | 国产精品久久久久久久一区二区 | 国产网站在线免费观看 | 在线看日韩av| 看片天堂| 操人网站 | 视频一区二区三区四区五区 | 激情三区 |