#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位址和埠號...