原创 stat結構體以及文件狀態相關函數

基本的stat結構體的大體組成成員如下:     struct stat     {         mode_t st_mode;  //文件類型或文件模式         ino_t st_ino;   //目錄進入點的inode節點

原创 const和#define的用途和比較以及注意事項

const的用途:     不規範的說法:const意味着“只讀”。     1、可以定義const變量     2、const可以修飾函數參數(輸入參數)、返回值、甚至函數的定義體。被const修飾的東西都受到強制保護,可以預防意外的變

原创 關於sizeof和strlen的使用

關於sizeof和strlen經常容易搞混淆,特別是初學者。   先看一個關於sizeof的應用的實例:     寫出下面程序的答案:                            答案:4,11,100,400,4,3,4,6

原创 內存使用

在做嵌入式開發過程中,內存問題時時提醒着我們,小心小心又小心的使用者有限的內存。   內存分配方式: 1、從靜態區域分配。內存在程序編譯的時候就已經分配好了,這塊內存在程序的整個運行期間都存在。例如全局變量、static變量。 2、在棧上

原创 嵌入式系統編程中的全局變量的使用

   在嵌入式系統編程中,一般很少建議使用全局變量進行參數的傳遞,因爲全局變量將破壞函數的封裝性。並且會浪費一些內存,但是他至少還是有下面兩個好處: 1、節省了函數切換的開銷——參數的入棧、出棧 2、可以隨時檢測和控制內存的使用量,在編譯

原创 linux下C實現cat命令

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <pwd.h> #include <sys/types.h> #include <grp.h> #in

原创 在linux下創建自己的命令

當我們自己編寫了一個比較好的程序,比如說,我寫了一個打印文件的cat命令,覺得比較好用,你想把他當系統命令來使用。只需要簡單的步驟就可以實現。     將你編譯好的程序可執行文件複製到/bin目錄下面。僅此而已。       編寫自己的m

原创 判斷一個郵箱地址是否合格

主要使用的函數: memchr函數:在某一內存範圍中查找一特定字符   #include <string.h>   void *memchr(const void *s,int c,size_t n)   函數說明:函數從頭開始搜索s所指

原创 BOOL,float,指針變量與零值比較的if語句

BOOL flag 與“零值”比較的if語句: 標準答案:                                不良風格:     if(flag)                                       i

原创 struct tm時間和字節數之間的轉換

在某些場合需要將時間存儲格式壓縮到4個字節,在字符串的時間和字節數的格式之間進行一個轉換。 短時間存儲的格式: Time(HMS) /*時分秒*/  Bit Position 0  1  2  3  4 5  6  7  8 

原创 關於x=x+1、x+=1、x++的執行效率問題

好久不來了,把最近遇到的一些問題貼出來,總結總結,增加自己對他們的記憶,歡迎各位網友不吝賜教!   關於x=x+1、x+=1、x++的執行效率問題是小弟在一次面試中以爲面試官提及的。   x=x+1的效率最低,因爲他的執行過程如下: 1

原创 windows和linux的比較

  最近有關操作系統的討論無論在法庭上還是在網上都是越來越熱烈了。這種熱烈氣氛的出現自然是與操作系統巨頭 Microsoft 脫不了干係的。法律界爲是否該裁定並懲罰 Microsoft 在操作系統上的非法壟斷行爲而頭疼,軟件業界爲如何抵禦

原创 THIS_MODULE介紹

  結構體struct module在內核中代表一個內核模塊,通過insmod(實際執行init_module系統調用)把自己編寫的內核模塊插入內核時,模塊便與一個 struct module結構體相關聯,併成爲內核的一部分。下面是結構體

原创 C語言實現的linux下ls命令

用C語言實現linux下的ls -l命令。與文件相關的結構體、函數等等知識請看"stat結構體以及文件相關函數" #include <stdio.h> #include <sys/types.h> #include <dirent.h

原创 嵌入式面試中遇到幾道筆試題

嵌入式編程方面的問題: 1、找出下面程序的錯誤 (一箇中斷服務子程序ISR)     interrupt double compute_area(double radius)     {         double area = PI