二分查詢 gcc makefile gdb除錯

2022-09-04 07:51:08 字數 2687 閱讀 5992

二分查詢的迭代和遞迴實現:

#include

#includeintfind1

(int*a

,int

low

,int

high

,int

key)//迭代二分查詢

return-1

;}

int

find2

(int*a

,int

low

,int

high

,int

key) //遞迴二分查詢

gcc是如何知道檔案型別呢?通過副檔名判斷檔案型別

makefile規則遵循以下通用形式

target:dependency [dependency[…]]                           //dependency是依賴的意思

command

command

[…]每個command第乙個字元必須是tab鍵,而不是空格鍵,不然make會報錯並停止。

稍微複雜的makefile,內容如下:

start:hello.o

gcc -o hello hello.o

hello.o:

gcc -o hello.o -c hello.c

target start後面的hello.o代表其下的command依賴與hello.o這個target。

所以make先執行了hello.o這個target下的command。

在makefile使用變數:

cc=gcc

srcs=hello.c

objs=$(srcs:.c=.o)

exec=hello

start:hello.o

$(cc) -o $(exec) $(objs) 

@echo '---------------ok---------------'

hello.o:

$(cc) -o $(objs) -c $(srcs) 

clean:

rm -f hello.o

增加變數cc,srcs、objs、exec,即每個引用變數cc的地方的展開成變數的值。

objs=$(srcs:.c=.o),意思是將srcs變數中的.c替換為.o。

makefile的模式規則

.suffixes: .c .o    表示任何x.c檔案與x.o關聯

.c.o:     表示make定義了一條規則,任何x.o檔案都從 x.c編譯而來

make定義了一些有用的預定義變數

在makefile使用自動變數和模式規則的例子並且可以編譯多個原始檔

.suffixes:.c .o

cc=gcc

srcs=hello.c\

pub.c

objs=$(srcs:.c=.o)

exec=hello

start:$(objs)

$(cc) -o $(exec) $(objs) 

@echo '---------------ok---------------'

.c.o:

$(cc) -o $@ -c $

clean:

rm -f $(objs)

gdb除錯一定要加上-g選項:

gdb 程式名 [corefile]    

corefile是可選的,但能增強gdb的除錯能力。

linux預設是不生成corefile的,所以需要在使用者profile檔案中新增

vi  .profile

ulimit -c unlimited

. .profile

來自為知筆記(wiz)

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

1128 二分 二分查詢

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述nettle最近在玩 艦 因此nettle收集了很多很多的船 這裡我們假設nettle氪了很多金,開了無數個船位 去除掉重複的船之後,還剩下n 1 n 1,000,000 種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有...

二分查詢及變種二分查詢

二分查詢也稱折半查詢 binary search 它的查詢效率很好。二分查詢有乙個要求是必須採用順序儲存結構,而且表種的元素是有序的。只有滿足這個條件我們才能使用二分查詢。查詢條件 查詢區域的左邊界,小於等於查詢區域的右邊界 查詢過程 1.迴圈條件 查詢條件 2.計算序列中間下標位置 3.如果待查詢...