模塊級變量和全局變量 單片機(jī)C語言中用全局變量好,還是用函數(shù)返回好?為何?
單片機(jī)C語言中用全局變量好,還是用函數(shù)返回好?為何?至于你的問題,我認(rèn)為你不能直接比較兩者。說白了,你問題的原意可以理解為在特定情況下如何選擇兩者。首先,您需要了解全局變量的作用。首先,我認(rèn)為最重要的
單片機(jī)C語言中用全局變量好,還是用函數(shù)返回好?為何?
至于你的問題,我認(rèn)為你不能直接比較兩者。說白了,你問題的原意可以理解為在特定情況下如何選擇兩者。
首先,您需要了解全局變量的作用。首先,我認(rèn)為最重要的一點(diǎn)是兩個(gè)獨(dú)立操作之間的通信。假設(shè)兩個(gè)獨(dú)立操作之間沒有交互作用,最好直接在函數(shù)內(nèi)部使用局部變量。使用全局變量的另一個(gè)原因是,當(dāng)數(shù)據(jù)結(jié)構(gòu)相對較大時(shí),使用局部變量將超過堆棧限制。此時(shí),必須設(shè)置一個(gè)全局變量以避免此問題。
函數(shù)返回是指被調(diào)用函數(shù)將結(jié)果返回給調(diào)用者。使用函數(shù)返回方法可以使界面簡潔明了,但結(jié)果總是需要用到的。它可以用作函數(shù)參數(shù)或直接賦給變量。您不能將所有運(yùn)算的計(jì)算結(jié)果都設(shè)計(jì)為函數(shù)返回形式,這會(huì)造成太多的冗余。至于報(bào)稅表和報(bào)稅類型,你得視具體情況而定。
總之,您需要根據(jù)您想要實(shí)現(xiàn)的目的選擇正確的形式來實(shí)現(xiàn)您的代碼。您可以參考一些官方代碼庫或權(quán)威書籍進(jìn)行進(jìn)一步的研究。
新手問題,為什么單片機(jī)的程序中要大量使用全局變量?
從解耦的角度來看,全局變量越少越好。以提高程序的可維護(hù)性。全局變量在單片機(jī)程序中有著廣泛的應(yīng)用。一方面,傳統(tǒng)MCU的資源有限,使用全局變量的成本較低。另一方面,傳統(tǒng)單片機(jī)的程序模塊較少,耦合度易于人工控制。
在單片機(jī)中,一個(gè)全局變量,在中斷中改變它的值供主程序使用,在使用之后,能不能在將這個(gè)全局變量變?yōu)槌跏嫉模?/h2>
也許我的理解有點(diǎn)偏頗。如果希望避免在主程序中使用全局變量時(shí)更改它,可以這樣處理:只需定義另一個(gè)變量。在主程序中,首先將中斷中的全局變量分配給新添加的變量,然后進(jìn)行相應(yīng)的處理。
C語言開發(fā)單片機(jī)為什么大多數(shù)都采用全局變量的形式?
]您看到的大多數(shù)應(yīng)用程序都比較簡單,或者M(jìn)CU性能不強(qiáng),為了降低調(diào)用函數(shù)的性能,使用全局變量
!第一,情況無話可說,問題不大。
第二,也很普遍。我認(rèn)為這與歷史遺留的問題有關(guān)。主流MCU上的100m似乎已經(jīng)存在了大約15年。因此,人們普遍認(rèn)為單片機(jī)的性能較差。每個(gè)人都會(huì)想到一種提高代碼效率的方法。全局變量的廣泛使用是應(yīng)用最廣泛和最有效的一種!但這不符合PC應(yīng)用程序程序員編寫的模塊化、高內(nèi)聚、低耦合的方法。不行,功能和性能只能優(yōu)先考慮
!您是否忽略了由這個(gè)全局變量引起的軟件風(fēng)險(xiǎn)以及開發(fā)和維護(hù)困難?當(dāng)然不是。我們應(yīng)該嚴(yán)格管理這些全局變量,給每個(gè)變量一個(gè)明確的定義、類型和函數(shù),這些都應(yīng)該在文檔中明確描述!如果你理解了這樣一個(gè)文檔,你就會(huì)理解一半以上的軟件功能和框架(可能沒有框架),這樣開發(fā)和維護(hù)就可以繼續(xù)了。
回到現(xiàn)在,MCU的主頻超過1GHz。選擇200米以上的MCU非常容易,內(nèi)存為512KB。因此,MCU的全局變量也可以成為歷史。讓我們擁抱更合適的軟件開發(fā)思想和方法,模塊化和面向?qū)ο?/p>
C語言全局變量和局部變量會(huì)沖突嗎?為什么?
在C語言中,這取決于如何放置全局變量和局部變量。如果將全局變量和局部變量放在一個(gè)代碼文件中,則會(huì)發(fā)生沖突。所以不明顯,我將編寫一個(gè)C程序代碼,如下圖所示:
在這個(gè)C程序中,我在main函數(shù)外定義了一個(gè)全局變量para,并給出一個(gè)初始值1。在C程序的主函數(shù)中,我定義了一個(gè)變量para,它與主函數(shù)外的變量同名。
這里,C程序主函數(shù)外的變量的生命周期在整個(gè)代碼中是有效的,而主函數(shù)的變量只在主函數(shù)中有效。
也就是說,當(dāng)您在C程序的主函數(shù)中操作para變量時(shí),實(shí)際上是在主函數(shù)中操作變量,而外部para變量的值仍然是1。在這個(gè)C程序中,main函數(shù)中的para變量隱藏了外部變量para。
因此,學(xué)生在學(xué)習(xí)C語言時(shí),必須注意全局變量被同名局部變量覆蓋的問題,還要了解變量的范圍和生命周期。
在VB中全局變量必須在什么模塊中定義。所使用的語句為什么?
在使用VB開發(fā)軟件時(shí),往往需要在不同的窗體之間共享數(shù)據(jù),但是當(dāng)使用太多全局變量時(shí),不方便調(diào)試和修改軟件。通常有兩種解決方案。第一種方法是定義全局變量,然后以各種形式直接使用它們,例如publicstrcustomerid作為string publicstrcustomername作為string。第二種方法是添加一個(gè)模塊來定義變量,然后定義一些公共變量