程式設計思路要清晰,要對自己所要做的事情有個百分之一百二十的了解。
不能模稜兩可差不多就行。
往後的日子還很長,只圖一時的爽快,將得不償失,不值得,
甜在前頭,苦在哭在後頭,是令人很煩惱的一件事情。
無論時間多麼倉促,自己都要想辦法弄清楚自己所面對的是什麼東西,
我要把它做成什麼樣子,做到什麼程度。
做任何事情,試錯沒有問題,但不能不經過大腦而滿目的如無頭蒼蠅一般胡亂瞎捉摸,那樣只是做無用功,甚至會適得其反。
要經過自己的腦袋思索一番,想象一番,沿著可能的條件和方向摸索,
你會像在黑暗中摸索前進的道路一樣,你會漸漸靠近出口,漸漸靠近光明。
編寫軟體,要分清程式的架構,層與層、模組與模組、介面與介面之間的聯絡。
既要熟悉各層、各模組、各界面的內容,
也要熟悉它們組合後系統的概貌和邏輯,
知道系統是什麼,它能幹什麼,不能幹什麼。
以windows下程式為例。
它們分使用者模式和核心模式。
使用者模式的程式有應用程式、使用者dll和系統dll。
核心模式有核心、驅動程式和硬體。
從分分層的角度看,由上往下,一次是應用層程式,然後是dll、lib庫,
然後是驅動,然後是fpga,然後是硬體。
在編寫驅動的時候,有時候需要上層的東西。
乙個暫存器,它裡面的bit位被用於不同的作用。
現在要擴充乙個暫存器的乙個bit位,
很顯然,應用層需要修改,lib需要改動,同樣驅動也要改。
比如:
typedef union example
u; ulong v;
};typedef _register
register, *pregister;
void setregisterer_examplea(pregister reg, ulong a)
現在union example裡要擴充套件u的乙個bit位,比如擴充套件成如下:
typedef
union example
u; ulong v;
};
那麼要增加乙個設定b的介面,可以把函式setregisterer_examplea擴充套件乙個引數,如下:
void setregisterer_examplea(pregister reg, ulong a, ulong b)
但這樣改介面setregisterer_examplea,會帶來所有呼叫setregisterer_examplea地方的修改,一些呼叫setregisterer_examplea的地方,沒有辦法獲得ulong b引數資訊,
因此擴充套件setregisterer_examplea乙個引數不是乙個好辦法,有的時候都不能這麼弄。
看看setregisterer_examplea函式裡面,它是讀乙個暫存器,只是修改跟a相關的,再寫暫存器,因此,可以再寫乙個介面setregisterer_exampleb,專門修改b,
比如如下**:
void setregisterer_exampleb(pregister reg, ulong b)
setregisterer_exampleb函式是, C 程式設計點滴
有效解決記憶體洩露 一 你需要乙個函式將乙個陣列賦值為等差數列,並將會在函式的外部使用它。不合理 int getarray int n return p 合理 void getarray int p,int n 解析 檢查記憶體洩露的最好辦法,就是檢查完全配對的申請和釋放,在函式中申請而在外部釋放,...
wince 程式設計點滴
me.formborderstyle windows.forms.formborderstyle.none 設定為無邊框模式即可。private sub button1 click byval sender as system.object,byval e as system.eventargs h...
linux 程式設計點滴
進入vim 介面以後,在命令列 輸入 sp filename,就可以顯示多個檔案的內容 輸入i 就進入剛才建立的檔案的編輯模式下了 crlt w 下箭頭,就進入了下乙個檔案的文字內容 在命令模式下 set nu 可以顯示行號 滑鼠箭頭指向乙個開始的行 然後輸入乙個數字 n 並輸入兩個dd 這樣就從滑...