原创 【Linux + Makefile】簡單實用的Makefile模板來了

今天給大家介紹一個簡單實用的Makefile模板,也可以當做學習Makefile核心內容的範例,裏面都有詳細的註釋,清晰明瞭。 這個Makefile主要解決以下需求: ###################################

原创 【Linux + C語言】C語言獲取文件大小的方法都在這 @@@!!!

筆者在日常項目中經常需要使用C語言求一個文件的大小,特整理了一些常用的方法,通過測試代碼的形式展示出來,話不多說,直接上代碼: #include <stdio.h> #include <stdlib.h> #include <sys/

原创 【C語言】使用餘式表的方式計算CRC16

在平時的工作中,可能你也面遇到計算CRC16校驗的問題。筆者曾經對接過MODBUS協議,就是使用了CRC16作爲校驗碼。以下是筆者分享的,如何使用【餘式表】計算CRC16的接口代碼。 static const uint16_t crc_

原创 【Linux + C語言】讓你的printf多姿多彩,讓你的日誌打印高效快捷 —— printf帶顏色打印輸出

使用過C語言的童鞋都知道,使用printf可以在終端(控制檯或者串口等輸出設備)輸出信息,這爲我們平時調試程序提供了便利,只是我們通常的打印用法,僅僅是 printf("Hello World !\r\n"); 毫無生氣,控制檯也僅僅是輸

原创 【shell腳本】如何快速生成一個固定大小且內容隨機的文件?

        筆者最近在項目自測試中,有個小小的需求:需要在原始文件的後面,追加一個固定大小的文件,組成一個更大的文件做測試,並且爲了保證測試結果的準確性和隨機性,這個固定大小的文件還必須是內容隨機的。經過學習和整理,發現在linux命

原创 【C語言】使用查表法計算CRC8

筆者曾經在一個項目中,有一個數據協議對接需要用到簡單的CRC8校驗。當初我們實現的方法是使用查表法,現將實現代碼分享下。 //CRC8查表法 static uint8_t R_CRCTABLE[] = //reversed, 8-

原创 【C語言】利用assert高效排查你的C程序

        衆所周知,我們在實際開發C程序的時候,往往是編碼容易——調試困難,修改容易——排查困難。我們在開發過程中,debug佔據了我們很大一部分的時間,而正確地使用各種編碼手段,可以有效地提升排查問題代碼的效率。筆者從自己的實踐經

原创 【非對稱算法和信息摘要算法的核心應用】數字簽名和消息驗籤

         筆者在前面幾篇文章中,一口氣分別介紹了【對稱加密算法、非對稱加密算法、信息摘要算法】,從中讀者能大致瞭解到各種算法的應用場景是怎麼樣的。這一次,我們將進一步介紹【非對稱加密算法】和【消息摘要算法】的綜合應用:數字簽名和消

原创 【Linux】如何使用gcc編譯源代碼時輸出map文件?

熟悉Linux環境編程的童鞋,對gcc一定不是很陌生,它可以高效地將C/C++代碼編譯成可執行文件。在嵌入式開發領域,gcc更是無比的強大,採用不同編譯平臺的gcc編譯器,對應地就可以生成該平臺的bin文件。由於gcc功能強大,在編譯Li

原创 【Linux】如何使用gcc生成預編譯文件?

假設我們有以下測試代碼: #include <stdio.h> #define max(x,y) ({\ typeof(x) _x = (x);\ typeof(y) _y = (y);\ (void) (&_x == &

原创 【算法大雜燴】常見算法的歸類和總結——消息摘要算法

       在上一篇文章  【算法大雜燴】常見算法的歸類和總結——非對稱加密算法  中我們簡要介紹了常見的非對稱加密算法的相關知識。這次我們乘勝追擊,介紹【信息摘要算法】, 通過本文的閱讀,你可以瞭解到以下知識: 什麼是信息摘要算法?

原创 【Linux + Makefile】Makefile的高階用法:解決C文件包含的頭文件修改了,但C文件不重新編譯的問題

在上一篇 《【Linux + Makefile】十分鐘教你學會Makefile的FORCE 》文章的最後,筆者就FORCE的用法在一個示例工程中使用,提出了一個問題:爲何build_info.h每次都是新生成的(有修改過),而main.c

原创 【Linux內核】從小小的宏定義窺探Linux內核的精妙設計

        Linux操作系統,可以說它就是程序猿的代碼天堂;這不僅僅因爲它是開源的,更多的是因爲它的誕生,是由世界上無數的代碼天才共同締造而來;跑在它上面的Linux內核,經受了世界上各式各樣的服務器壓力測試,始終保持着高效、穩定、

原创 【C語言】sprintf 和 snprintf 真的沒有區別嗎?

C語言上總有些非常相近的接口函數,比如sprintf和snprintf就是其中的一對。以筆者多年的工作經驗,這對接口函數在平時的編程中,使用的頻度是非常高,只是你真的瞭解它們倆的區別嗎? 帶着這個問題,請跟隨筆者的思路梳理一遍sprint

原创 【網絡編程】Linux平臺如何使用代碼實現從ifconfig命令中取得機器的ip地址

熟悉Linux命令行的童鞋都知道,ifconfig命令可以列出當前機器所有網絡設備節點對應的IP地址,如下示例所示; 我們在實際的編程代碼中,也需要通過代碼來獲取本地的IP地址,那麼有沒有辦法,直接在代碼中調用【ifconfig】命令行