原创 C_語法_宏定義define和函數的作用…

要寫好C語言,漂亮的宏定義是非常重要的。宏定義可以幫助我們防止出錯,提高代碼的可移植性和可讀性等。 在軟件開發過程中,經常有一些常用或者通用的功能或者代碼段,這些功能既可以寫成函數,也可以封裝成爲宏定義。那麼究竟是用函數好,還是宏

原创 解釋和編譯

計算機並不能直接地接受和執行用高級語言編寫的源程序,源程序在輸入計算機時,通過"翻譯程序"翻譯成機器語言形式的目標程序,計算機才能識別和執行。這種"翻譯"通常有兩種方式,即編譯方式和解釋方式。編譯方式是指利用事先編好的一個稱爲編譯程序

原创 windows下visualbox+ubuntu開機自…

一般有以下兩種掛載方式: 一、手動掛載 顧名思義,每次打開虛擬機的時候必須手動掛載,纔會把共享文件夾掛載到虛擬機裏,方法如下: 1、設置共享文件夾        出現如下界面,點擊右邊的綠色“+”,添加共享目錄

原创 linux設備驅動makefile文件

ifeq ($(KERNELRELEASE),)         KERNELDIR ?= /home/linux/linux-2.6.22.6         PWD := $(shell pwd)         modules:

原创 隱式聲明函數kfree

驅動程序make時出現以下錯誤: /home/zqy/文檔/char/demo.c: 在函數‘DEMO_cleanup_module’中: /home/zqy/文檔/char/demo.c:161:3: 錯誤: 隱式聲明函數‘kfree’

原创 進程和線程

進程和線程的區別(原文地址:http://www.cnblogs.com/lmule/archive/2010/08/18/1802774.html) 簡而言之,一個程序至少有一個進程,一個進程至少有一個線程.  線程的劃分尺度小

原创 Makefile常用函數

 Makefile常用函數 在Makefile中可以使用函數來處理變量,從而讓我們的命令或是規則更爲的靈活和具有智能。make所支持的函數也不算很多,不過已經足夠我們的操作了。函數調用後,函數的返回值可以當做變量來使用。 函數的調用

原创 動態規劃和貪心算法

動態規劃和貪心算法都是用來求最優化問題,且二者都必須具有最有子結構。貪心算法可以解決的問題,動態規劃都能解決,可以說,貪心算法是動態規劃的一個特例。 貪心算法和動態規劃最大的不同在於,它並不是首先尋找子問題的最優解,然後在其中進行選擇,而

原创 五層協議模型

OSI七層體系機構:應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層。TCP/IP四層體系結構:應用層(TELNET、FTP、SMTP等)、運輸層(TCP或UDP)、網際層IP、網絡接口層。五層協議體系結構:應用層、傳輸層、網

原创 GDB調試程序

用GDB調試程序 GDB概述———— GDB是GNU開源組織發佈的一個強大的UNIX下的程序調試工具。或許,各位比較喜歡那種圖形界面方式的,像VC、BCB等IDE的調試,但如果你是在UNIX平臺下做軟件,你會發現GDB這個調試工具有比

原创 sed流編輯器

注意事項: (1)sed只讀取在命令行置頂的文件,將其用作輸入,它不試圖修改該文件。 (2)sed是面向行的。‘d’命令不是簡單的告訴sed一下子刪除所有輸入數據。相反sed逐行將文件每一行讀入其稱爲模式緩衝區的內部緩衝區,一旦將一行讀入

原创 中斷和異常

      在《深入理解計算機》一書中,是將中斷(interrupt)、陷阱(trap)、故障(fault)和終止(abort)統一歸於異常來闡述。C++和JAVA程序猿會注意到術語“異常”也用來描述由C++和JAVA以catch、thr

原创 /proc——虛擬文件系統

/proc文件系統是一種內核和內核模塊用來向進程(process)發送信息的機制。這個僞文件系統讓你可以和內核內部數據結構進行交互,獲取有關進程的有用信息,在運行中改變設置(通過改變內核參數)。與其他文件系統不同,/proc存在於內存之中

原创 c語言實現cpp中的引用傳遞

C語言不存在按引用傳遞,一切都是按值傳遞。 這是由C語言的特點決定的,C語言中不需要按引用傳遞,因爲指針技術完全可以理所當然地實現同樣的目的。 而C#和Java 這類不允許指針的語言,就必須區別這兩種傳遞方式。 在C中,唯一容易

原创 內核燒寫雜記

在linux內核移植過程中,需要將linux內核燒寫到開發板上。   基本的步驟是: 1、將bootloader通過J-TAG燒寫到開發板上,而一般bootloader與硬件密切相關,硬件廠商都會提供這樣的板級支持包。 不同的boot