天天看點

C語言子產品化程式設計

我就不多廢話了,來講講C語言最重要的一部分——子產品化程式設計。将程式子產品化之後,會有意想不到的收獲,會使程式更加清晰明了。

愛在CSDN等論壇上參考例程的同學都知道,很多人把代碼分了很多塊,但是一些萌新不知道如何将這些“碎片”拼接起來。是以我決定最後給大家分享這個經驗。

你們可以看我這張圖檔:

C語言子產品化程式設計

這就是一個簡單的子產品化,面向過程的程式設計其實就是一步一個腳印,寫好每一個函數。而不是像以前一樣,所有的東西都放在main()函數裡面。子產品化就好像數學裡的複合函數,main是最外面的外函數,裡面有許多調用的内函數。

比如要實作之前文章(SM4)中循環位移,我不用在主函數裡面寫代碼,而是建一個新的函數:

unsigned long Change_Place(unsigned long In,int Num)
{
	long temp;
	temp = (In << Num) | (In >> (32-Num));
	return temp;	
}
           

一般是通過入口參數和傳回值來與主函數進行聯系,是以這裡就要牽扯到局部變量了,關于局部變量和全局變量不是本文的重點就不多bb。

對于這個

Change_Place(unsigned long In,int Num)

函數,我們隻需要在需要調用它的函數中寫上它就可以,比如我要對

0x12345678

這個數循環左移12位。我就在另外一個函數中寫上

使用的前提是在.c檔案中聲明過

Change_Place(unsigned long In,int Num)

函數

C語言子產品化程式設計

而一般這種聲明我們都會寫在頭檔案(.h)中,一般頭檔案命名和.c檔案對應,比如SM4.c的函數聲明我就放在SM4.h中。

C語言子產品化程式設計

是以這裡就教大家如何寫頭檔案:

#ifndef __SM4_H
#define __SM4_H

#include "stdio.h"

/*
function:此函數為循環位移函數
IN:輸入需要位移的數,long型 
Num:位移的位數*/
unsigned long Change_Place(unsigned long In, int Num);

#endif
           

這一段話第一二行是為了防止出現重定義,翻譯過來就是“如果沒有定義SM4.h這個頭檔案,那麼就定義SM4.h這個頭檔案”

#if

對應的就有

#endif

這是放在最後的,記住就行。

頭檔案中仍然可以聲明其中包含的其他頭檔案比如

但是切記,頭檔案隻是聲明函數,千萬不要寫函數的内容,否者頭檔案的意義就不在了,而且按道理說,頭檔案的内容是不會被編譯器編譯進去的,是以千萬不要在其中寫内容。

然後,要進行子產品化程式設計就得改變一個習慣,就是不能建立檔案,而是建立工程:

C語言子產品化程式設計

Dev中是項目,一般選擇

C語言子產品化程式設計

hello world這個,建立完成後直接編譯看看能不能顯示出hello,world這句話,這是為了檢驗編譯環境是否有問題。

其他的沒啥說的了,大家多練習,可以用我的SM4文章來測試是否掌握子產品化程式設計,很多東西都能子產品化程式設計的,甚至一句hello,word都可以,需要的善于創造的腦子。

交流群:1033131250

繼續閱讀