原创 C語言實現的json解析程序

只有一個頭文件和一個源文件,僅使用C語言標準庫。 作用就是讀取json文件,然後解析爲若干個互相關聯的結構,結構如下: typedef enum json_st { djson_string = 1, djson_number,

原创 GNU-make 傳遞命令給子makefile

例如主makefile中由clean目標,如果想要通過make clean執行子目錄中makefile的cle,可以這樣寫 #假設子目錄爲test,在test目錄裏的makefile由cle目標 clean: cd test &

原创 如何讓gcc編譯中斷函數

在x86中,一般函數通過"call"指令調用,"ret"指令返回,但是中斷函數不同,它在中斷或者異常發生時自動切入(或者使用"int"指令),此時cpu會向棧中壓入一堆寄存器來保護現場,如果是異常,還會多壓一個錯誤代碼,因此編寫中斷函數返

原创 使用python寫的gcc下載腳本

本腳本通過訪問 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu/pool/main/g/gcc-9/ 來獲取要下載的內容。 目前只能在上面的網址下載gcc-9的deb包,可以

原创 基數樹的簡單實現

基數樹是一種比較節省空間的樹結構,下圖展示了基數樹的結構,其中key是樹的構建方式,在這裏,key是一個32位的整數,爲了避免層數過深,所以使用兩位代表子節點的索引,基數樹就是依據二進制串來生成樹結構。值value被儲存在葉節點。 假設k

原创 基數樹的簡單實現-二

對之前的基數樹做了修改,減少空間佔用。 頭文件: #pragma once #include<stdlib.h> #include<stdio.h> #define MEMPAGE 4096 #define INIT_POOL_SIZ

原创 makefile中使用powershell && 使用powershell進行數學計算

在makefile中使用shell命令,格式爲:$(shell 命令)。例如:$(shell pwd),用來獲取當前路徑。 但是隻有在Linux下直接使用有效,在Windows下使用會出現錯誤,不過,GNU/make提供了指定shell的

原创 C語言編程時可能會發生的錯誤(不定時更新)

VS 提示"CL.exe已退出,代碼爲2",檢查是否有函數沒有寫返回值。 某個文件內的全局變量不要放在它的頭文件中,不然在主文件調用時會引發重定義錯誤。 定義結構體對齊時,#pragma pack(n)和#pragma pack()要成對

原创 C語言使用MCI接口播放聲音

2017-12-5 20:58  代碼如下: #include<iostream> #include<windows.h> #include<Mmsystem.h> #pragma comment(lib,"winmm.lib")

原创 Qt串口操作-打開串口

Qt使用QSerialPort來操作串口,使用時需要在.pro文件中加入: QT += serialport 然後使用#include引入頭文件。(我不明白爲什麼Qt要使用這樣的設計,完全可以只依靠引入頭文件來實現) 以下爲打開

原创 linux文件操作(ATT彙編)

首先介紹一下linux的shell腳本寫法,其實與windows下.bat文件的寫法差不多,一行一行的寫命令就行了,例如,當我們要用vim打開某個目錄(/user/include/printf.h)下的文件,可以這樣寫: cd /usr/

原创 使用OpenGL生成一個簡單的莫比烏斯環

生成的結果如下,初學者,只是使用了一些基礎的函數: 代碼如下: #include<iostream> #include<math.h> using namespace std; #include<gl/glut.h> //莫比烏斯

原创 一個Qt Creator的bug:C2001:常量中有換行符

這個錯誤以前我所見過的只在Visual Studio中發生過,一般是編碼有問題,這個我至今無解,明明都是utf-8,一個可以用,另一個就會出錯。一般在自己的電腦運行別人代碼文件時,最好配置成完全相同的環境,否則指不定出什麼錯。 解決方法:

原创 linux下的AT&T彙編——鍵盤輸入輸出,makefile文件的編寫

注:1.linux的系統調用號在“/usr/include/asm/unistd.h”文件中,有32位和64位之分2.linux下函數參數是用寄存器進行傳遞的,因此同時最多隻能傳遞6個參數。3.linux的軟中斷號爲0x80,因此調用中斷

原创 linux-AT&T彙編,把32位寄存器的值以16進制字符串打印出來

將寄存器的值以16進制顯示,程序如下:.section .bbs .lcomm buf,10 #定義一個10字節長度的內存區,用來儲存計算出來的字符 .section .text .globl _start _start: //初始化寄