c語言學習筆記二十一

2021-09-01 12:17:20 字數 1434 閱讀 4233

makefile中關於變數的語法規則

示例**如下:

foo = $(bar)

bar = huh?

all:

@echo $(foo)

執行make後輸出: huh?

優點: 可以把變數的值推遲到後面定義

示例**:

main.o:main.c

$(cc) $(cfags) $(cppflags) -c $<

cc=gcc

#編譯選項

cfags= -o -g

#預處理選項

cppflags= -iinclude

編譯展開後為:

gcc -o -g -iinclude -c main.c

示例**:

x := foo

#$(x)會立即展開

y := $(x) bar

#定義乙個變數的值是空格

nullstring :=

space := $(nullstring)

x := fbb

#$(x)不會立即展開

# y如果沒有定義過,就按=處理,如果已經定義就不作任何操作

y ?= $(x) bar

objects = main.o

#可以給變數追加值

#如果objects = main.o用=定義,不會立即展開

#objects := main.o用:=定義,會立即展開

objects += $(foo)

foo = foo.o bar.o

all:

@echo "-$(y)-"

@echo "--$(space)--"

@echo "---$(y)---"

@echo "----$(objects)----"

輸出結果為:

-foo bar-

-- --

----foo bar---

----main.o foo.o bar.o----

常用的特殊變數有:

$@,表示規則中的目標。

$<,表示規則中的第乙個條件。

$?,表示規則中所有比目標新的條件,組成乙個列表,以空格分隔。

$^,表示規則中的所有條件,組成乙個列表,以空格分隔。

示例**:

test34:test34.o test33.o test31.o

(這裡是個tab) gcc test34.o test33.o test31.o -o test34

可以改寫為:

test34:test34.o test33.o test31.o

(這裡是個tab) gcc $^ -o $@

示例**如下:

libsome.a: foo.o bar.o lose.o wino

#只有更新過的目標檔案才會重新打包

arr r libsome.a $?

python 學習筆記(二十一)

coding utf8 author liwei windows平台多程序匯入multiprocessing模組 from multiprocessing import process,queue from multiprocessing import pool import os,time,ran...

筆記(二十一) 安全

威脅 定義對應安全屬性 spoofing 偽裝 冒充他人身份 認證tampering 篡改 修改資料或 完整性repudiation 抵賴 否認做過的事情 不可抵賴性 information disclosure 資訊洩露 機密資訊洩露 機密性denial of service 拒絕服務 拒絕服務 ...

C語言開發總結(二十一)

c語言記憶體管理分析 歡迎進入記憶體這片雷區。偉大的bill gates 曾經失言 640k ought to be enough for everybody bill gates 1981 程式設計師們經常編寫記憶體管理程式,往往提心吊膽。如果不想觸雷,唯一的解決辦法就是發現所有潛伏的地雷並且排除...