|
發布時間: 2025-1-19 09:55
正文摘要:8位單片機驅動程序 #include"TM1637.h" #define CLK P12 //時鐘 #define DIO P13 //數據 static u8 code SHUZU[]= { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x ... |
|
在C語言中,static關鍵字主要用于三種場景:修飾局部變量以延長生命周期、修飾全局變量/函數以限制作用域、定義靜態數組參數(C99+)。 static關鍵字的三種核心作用 1、修飾局部變量。 存儲方式:從棧區改為靜態存儲區,內存分配在程序啟動時完成,程序結束時釋放。 生命周期:從函數調用期間延長至整個程序運行周期,保留函數多次調用間的值。 初始化:僅首次執行時初始化(默認值為0),后續調用沿用上一次的值。 典型用例:記錄函數調用次數、保持狀態連續性(如計數器)。 2、修飾全局變量。 作用域:將原本全局可見的變量限制為僅當前文件內可訪問,避免多文件項目的命名沖突。 鏈接屬性:禁止其他文件通過extern引用,實現模塊化封裝。 內存分配:與普通全局變量相同,仍存儲在靜態區。 3、修飾函數。 作用域限制:靜態函數僅能在聲明它的文件內部調用,增強代碼的封裝性和安全性。 典型用例:輔助函數或工具函數的內部隔離,避免被外部誤用。 擴展:靜態數組參數(C99標準) 在函數參數中聲明void func(int arr[static 10])時,static表示arr指針至少指向含10個元素的數組,輔助編譯器進行邊界檢查和優化。 |
|
static void i2C(bit T) { if(T) CLK=0,DIO=0,CLK=1; else CLK=1,DIO=1,DIO=0; } 這里不對的 |