一、makefile
make命令執行時,需要乙個makefile檔案,以告訴make命令需要怎樣去編譯和鏈結程式。
格式:target(目標):dependency(依賴)
(tab字元)command(命令)
例:hello:hello.c
gcc hello.c -o hello
通過hello.o和print.o檔案生成hello,使用變數方便程式設計。
target = hello
object = hello.o print.o
$(target):$(object)
gcc $(object) -o $(target)
hello.o:hello.c
gcc -c hello.c -o hello.o
print.o:print.c
gcc -c print.c -o print.o
make只能編譯最新檔案:
make clean
.phony:clean //宣告clean為偽目標
clean:
rm *.o hello
用gcc編譯多個檔案:gcc hello.c print.c -o hello
二、gdb除錯工具
編譯時使用gcc xx.c -o xx -g
gdb xx進入除錯
(1)l+行號:顯示從該行開始的十行
(2)加斷點:b 行號或者 break 函式名
檢視斷點資訊:info b 刪除斷點:delete b
(3)執行:run/r
(4)print x列印變數值
(5)continue繼續向下執行
return退出函式
quit/q退出
三、shell指令碼
檔案字尾為.sh
加固定格式標頭檔案:#!/bin/bash 或者 #!/bin/sh
例:指令碼輸出helloworld、hello、引數
#!/bin/bash
tmp="hello"
echo "helloworld"
echo $
echo "first $1"
echo "second $2"
echo "all $*"
echo "sum $#"
echo為輸出命令,echo 「hello」> xx (>表示覆蓋,>>表示追加)
指令碼在執行前不需要編譯為二進位制檔案,執行前需要用chmod修改許可權,執行./xx.sh +引數1 引數2……
$*:輸出所有引數,$#:輸出引數總數
指令碼中注釋用#
例:在指令碼中利用迴圈建立目錄、檔案
#!/bin/bash
for dir in $1 $2 $3 $4 #迴圈固定格式
domkdir $dir #建立目錄
cd $dir #進入目錄
touch $dir #建立檔案
echo "hello $dir" > $dir #在檔案中寫入hello xx
cd .. #返回上一層
done
判斷是檔案還是目錄:
#!/bin/bash
path = $1 #$1路徑在執行時寫入
if [ -z $1 ]; then #判斷是否輸入了命令列引數,exit退出整個指令碼
echo "error"
exit fi
if [ -d $1 ]; then
echo "dir"
elif [ -f $1 ]; then
echo "file"fi
指令碼中的選擇 switch case
判斷從鍵盤輸入的是數字、小寫字母、大寫字母還是特殊字元:
#!/bin/bash
read key
case "$" in
[a-z] ) echo "upperletter";;
[a-z] ) echo "lowerletter";;
[0-9] ) echo "number";;
* ) echo "error";;
esac
需要修改export lang=c,改變編碼順序。
在指令碼中輸出helloworld:
#!/bin/bash
file = "hello.c"
target = "hello"
echo "#include " > $file
echo "int main()" >> $file
echo 'printf("helloworld\n")' >> $file
gcc $file -o $target
./$target
如果使用cat > $file << eof,可以不使用echo
四、基本資料型別
常見資料型別占得位元組數:int 4 short 2 long 4 char 1 float 4 double 8
unsigned int型別整數範圍大於int型別,相同型別的資料才能進行運算。有符號整型和無符號整型運算,要將有符號型別用補碼形式轉化成無符號整型再進行運算。乘法要考慮越位問題。%u為無符號整型
volatile:防止編譯的時候被優化
\n 換行 \t空乙個tab鍵距離
條件運算子:(a>b)? a : b
區分++i,--i和i++,i--
int a=4;
a+=a++; (a=9)
a+=++a; (a=10)
++a+=a; (a=10)
++a+=a++; (a=11)
++a+=++a; (a=12)
++a最先執行
課堂筆記2(亂)
select it.iname 商品名稱,itc.cname 商品類別名稱 from item it join itemcategory itc on it.cid itc.id it 為item的別名 提高執行速度,itc為itcategory的別名。商品名稱為iname的別名,列的別名,影響執行...
c 課堂筆記(2)
include include includeusing namespace std int main 1計數控制的迴圈 2條件控制的迴圈 1當型迴圈結構,表示當條件p成立 為真 時反覆執行a操作,直到條件p不成立 為假 時迴圈結束 2直到型迴圈結構,表示先執行a操作,再判斷條件p是否成立 為真 若...
CSS 課堂筆記2
css 層疊樣式表,是給標籤 html 新增樣式的 鍵對值 屬性 屬性值 備註 html超文字標記語言,是標記語言,不是程式語言,說白了就是標籤。標籤 標籤名 一 文字的樣式 text 1 顏色 color red 2 文字對齊方式 text align left 左對齊 text align ce...