国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

c語言基礎學習

2019-11-08 18:35:15
字體:
來源:轉載
供稿:網友

編譯預處理與位運算

編譯預處理

作用 :對源程序編譯之前做一些處理

種類 : 宏定義 #define #ifdef #ifndef 文件包含 #include 條件編譯 #if–#else–#endif等 其他宏定義 #line #error #PRagma

不帶參數宏定義 一般形式 : #define 宏名 [宏體] 功能 : 用指定的宏名代替宏體

宏定義的規則 1.宏定義不是c語句,不必在行末加分號 2.在進行宏定義時可以引用自己已定義的宏名,可以層層替換。 3.宏定義只做字符替換,不分配內存空間 4.宏名的有限范圍為宏定義到本源文件結束 5.宏定義只做簡單的替換不做正確性檢查#define R 3.0#define PI 3.14#define L 2*PI*R帶參數宏定義

一般形式 : #define 宏名(參數表) 宏體 宏展開 :形參用實參換,其他字符保留

宏定義特點 : 1.帶參數宏定義中,宏名與形參表之間不能有空格出現,例如,#define MAX(a,b) (a>b)?a:b。其中MAX與(a,b)之間不能有空格 2.在帶參宏定義中,形參表示不分配內存單元,因此不必作類型定義。 3.帶參的宏和帶參函數很相似,但有本質上的不同
/ 帶參宏 函數
處理時間 編譯時 程序運行時
參數類型 無類型問題 定義實參,形參類型
內存占用 不分配內存 分配內存
運行速度 不占運行時間 調用返回占用時間
條件編譯 #ifdef 如果已定義#ifdef 標識符 程序段1#else 程序段2#endif

當所指定的標識符已經被#define命令定義過,注意只是標識符被定義過即可,不管它是否成立。則在程序編譯階段之編譯程序段1,否則只編譯程序段2。 2.#if 如果定義表達式成立

#if 常量表達式 程序段1#else 程序段2#endif

如果常量表達式的值為真(非0),則對程序段1進行編譯,否則對程序段2進行編譯。

3.# 字符串化操作符

#define mkstr(s) #sint main(void){ printf(mkstr(i like c)); return 0;}

預處理程序將 printf(mkstr(i like c)); 變成 printf(“i like c”);

4.## 可以把兩個獨立的字符串連接成一個字符串

#define SORT(X) sort_function##Xint mian(void){ char *array; int elements, element_size; SORT(3)(array, elements,element_size);}

預處理程序將SORT(3)轉換為sort_function3


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吴堡县| 甘孜县| 华亭县| 垦利县| 清远市| 将乐县| 隆德县| 新乡市| 鹤岗市| 循化| 桃园县| 郧西县| 沅江市| 无极县| 罗平县| 华池县| 九龙县| 汤阴县| 舒城县| 进贤县| 三门县| 和田县| 青神县| 泰顺县| 宁强县| 晋城| 谢通门县| 陆良县| 盐亭县| 新和县| 伊通| 印江| 收藏| 会泽县| 定南县| 商河县| 自治县| 龙岩市| 民权县| 张掖市| 南开区|