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

標題: 如何在單片機上使用全局變量 [打印本頁]

作者: miaoxiaobaiqaq    時間: 2019-4-12 20:03
標題: 如何在單片機上使用全局變量
在單片機中經常會遇到二個不同的.c文件需要使用同一個變量,但如何定義一個變量可以在不同的.c文件中使用呢?  當然是使用全局變量啦,可能有的人知道需要用extern來聲明變量,當時總是編譯錯誤,當然啦,我也是經常錯誤,才寫這個筆記的啊

下面我先介紹一下怎么正確的使用,在貼幾張錯誤使用全局變量的方法
如何正確的使用extern,實現main.c   led.c同時使用變量aaa

1在main.c中定義變量  int aaa=0;
2在led.c中定義 extern int aaa;(千萬不要賦值)

這樣就可以二個.c文件都可以使用aaa這個變量了,我之前為什么一直寫錯呢,我理解錯了extern的作用,其實extern是告訴編譯器這個變量在其他.c文件里面有了,取其他文件找就行了,哈哈,能搜到我這個的肯定是和我犯了一樣的錯誤吧
現在貼幾張錯誤的使用



顯示提示有錯誤:ERROR L104: MULTIPLE PUBLIC DEFINITIONS


現在把extern int aaa=0;改為extern int aaa;結果如下


希望能幫到和我一樣的單片機小白吧



作者: tieq1952    時間: 2019-4-13 07:16
謝謝分享!!!
作者: hls123    時間: 2019-4-13 10:48
還有一種不要模塊化,把所有子函數放在一個.c里面,然后定義變量主函數最上面定義的就是全局變量,在子函數里定義就是局部變量
作者: miaoxiaobaiqaq    時間: 2019-4-14 11:02
hls123 發表于 2019-4-13 10:48
還有一種不要模塊化,把所有子函數放在一個.c里面,然后定義變量主函數最上面定義的就是全局變量,在子函數 ...

你說的對,開始不會調用其他模塊的變量我就是把所有模塊放在一起寫,不過這樣寫的話如果以后需要用這個模塊就很不方便了,代碼模塊化以后調用起來特別方便
作者: miaoxiaobaiqaq    時間: 2019-4-14 11:03
tieq1952 發表于 2019-4-13 07:16
謝謝分享!!!

不謝不謝
作者: 郭龍·    時間: 2019-7-27 10:36
能不能舉個程序的例子呀 自己小白
作者: wuxiaojia    時間: 2019-7-27 13:42
1在main.c中定義變量  int aaa=0;
2在led.c中定義 extern int aaa;(千萬不要賦值)
第二點非常重要,賦值就會報錯了
作者: 7631001    時間: 2021-11-17 21:27
明白了,謝謝
作者: rz12345    時間: 2021-11-18 10:05
學習了,“其實extern是告訴編譯器這個變量在其他.c文件里面有了”重點
作者: 吳作和    時間: 2021-11-20 19:59
在led.c中,變量aaa不能賦值了,那有什么用
作者: 232-51    時間: 2021-11-20 20:34
常用變量直接建個變量聲明文件?
作者: ayld    時間: 2023-9-3 22:17

在led.c中,變量aaa不能賦值了,那有什么用

是的在其他文件中肯定要賦值的!
作者: likejian    時間: 2023-9-3 23:09
感謝提供出來,我也為這個煩惱了很久,
作者: 123156fsadf    時間: 2023-9-4 08:39
likejian 發表于 2023-9-3 23:09
感謝提供出來,我也為這個煩惱了很久,

其實最好不要用全局變量,你可以在a.c中定義一個static uint16_t  test = 0; 然后在a.c中寫一個函數,uint16_t GetTest(void)
{
    return test;
}
這樣寫,一個模塊最好只有幾個外部接口,如果變量過多可以用一個結構體包含

作者: 13205495918    時間: 2023-9-4 12:54
只可以有一個定義,但是可以有很多個聲明
作者: zhxzhx    時間: 2023-9-5 19:35
吳作和 發表于 2021-11-20 19:59
在led.c中,變量aaa不能賦值了,那有什么用

不能在聲明的時候賦值,C怎么學的啊
作者: 3038838599    時間: 2023-9-7 15:54
123156fsadf 發表于 2023-9-4 08:39
其實最好不要用全局變量,你可以在a.c中定義一個static uint16_t  test = 0; 然后在a.c中寫一個函數,uin ...

為什么要這樣寫呢 覺得這樣太麻煩了,一個全局變量直接搞定了
作者: ayld    時間: 2023-10-14 10:00
wuxiaojia 發表于 2019-7-27 13:42
1在main.c中定義變量  int aaa=0;
2在led.c中定義 extern int aaa;(千萬不要賦值)
第二點非常重要,賦值 ...

在程序中可以賦值,
aaa=0;


作者: 趣致克林    時間: 2023-10-16 17:25
也可以在一個.c文件里面定義變量,然后在.h頭文件里面extern 這個變量就可以,之后在用到這個變量的.c文件里面包含這個頭文件
作者: xuuummmm    時間: 2023-10-17 09:41
謝謝,真的很需要




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 在线观看一区 | 看羞羞视频免费 | 国内自拍偷拍 | 欧美日韩精品一区二区三区视频 | 在线观看免费av片 | a级在线免费视频 | 成人影| 国产成人精品综合 | 久久久精品一区二区三区 | 国产精品久久国产精品久久 | 欧美日韩国产欧美 | 国产精品久久二区 | 欧美精品1区2区 | 久久久久国产精品一区三寸 | 91久久精品视频 | 九九免费视频 | 超碰av在线 | 亚洲精品久久久9婷婷中文字幕 | 欧美精品在线一区二区三区 | 日韩在线观看一区二区三区 | 久久久久久久亚洲精品 | 中文在线а√在线8 | 不卡一区二区三区四区 | 一区二区在线看 | 亚洲九九| 亚洲视频在线免费 | 国产精品久久久久一区二区三区 | 欧美在线视频一区二区 | 成人精品鲁一区一区二区 | 中国黄色毛片视频 | 中文在线a在线 | 国产永久免费 | 亚洲精视频 | 国产精品视频导航 | 日韩视频精品 | 91久久| av色站| 97av| 日本成人片在线观看 | 97影院2| 在线播放国产一区二区三区 |