程式設計正規化12 筆記 編譯預處理 巨集展開

2021-08-08 02:50:16 字數 1127 閱讀 8653

#define w 40

#define h 80

#define pere 2*(w+h)

#define max(a,b) (a>b?a:b)

max(10,40)

//預處理替換為(10>40?10:40)

//速度比函式快

//而且不需要管型別

max(40.2,"hello")//報錯

#define func(a,b,c) ((char*)a+b*c)
assert是個巨集

#ifdef ndebug

#definw assert(cmd) (void)0

#else

#define assert(cond) cond?((void)0):\

fprintf(stderr,"......"),exit(0)

#endif

max(func1(10),func2(10))

//假設func1和func2是自己寫的,但是根據巨集替換,至少有乙個函式會被呼叫兩次

max(m++,n++)

//大的數會自加兩次

#include 

"vector.h"

會把vector.h裡面的文字貼上過來

gcc *** -c vector.c
防衛式宣告

#ifndef

#define

......

#endif

#include//printf

#include//malloc free

#include

int main(int argc, char* argv)

.o檔案結構

...

call ...

call//assert裡面要用

...call...

call...

rv=0

ret

產生.out

然後link

程式設計正規化8 筆記 C C 記憶體

在低位址 malloc分配heap的位址 int arr malloc 40 sizeof int 160b 實際164b或者168b,多出來的在頭部,用於記錄大小等資訊,但是返回的指標是在這個頭的後面 執行free函式時,指標會機械地回退4b or 8b 獲取大小資訊,並且free掉後面相應大小的...

C語言程式設計教程筆記 編譯預處理

預處理是在詞法掃瞄和語法分析之前的工作。預處理是c 的乙個重要功能。編譯之前,預處理程式將引用程式中的預處理命進行預處理,處理之後進入編譯。如圖。預處理命令是以 開頭的行。這些命令放在函式之外,經常放在程式的前面,成為預處理部分。c提供了多種預處理功能,如巨集定義,檔案包含,條件編譯等。合理使用預處...

Socket程式設計(5)筆記

解析伺服器ip位址 客戶端軟體設計過程中,使用者使用網域名稱是或點分標識,需要將yuing或ip位址轉換為32位ip位址。兩個函式 解析伺服器端口號 客戶端可能使用服務名 如http 標識伺服器端口,需要轉為埠號 解析協議號 需將協議名轉為協議號 tcp客戶端軟體流程 1 確定伺服器的ip位址和埠號...