整個五月份,完成駕駛員科目三訓練+考試,相當浪費時間,相當於什麼都沒做··
主要的預處理指令:
#include
#define
#undef
#if
#ifdef
#ifndef
#elif
#endif
#error
預處理指令
以
#
開頭,除空白字符外的第一個字符為此;#
後跟預處理指令;- 編譯前,編譯器會對此作出相關的轉換操作;
#include:包含一個源代碼文件
#include<stdio.h> 使用尖括號
搜索頭文件來自:
- 編譯器自帶的庫;
- 外部庫中的頭文件;
#include “stdio.h” 使用雙引號
搜索頭文件來自:
- 源代碼的文件夾中搜索;
- 如果↑找不到,再搜索編譯器自帶的頭文件;
#define:設置常量?
我們以往的印象中是直接用這玩意設置常量,例如:
1 |
這樣的話我們就可以在代碼中使用 PI
了。
定義宏的基本使用
宏?沒理解的話雲裡霧裡的抽象東西,知道他是:根據一系列預定義的規則替換一定的文本模式就好。上面我們也是看到了一個宏定義的基礎使用!
有趣的使用方式,也是我看別人博客才知道的···別人博客的鏈接
1 |
|
這樣可以讓變量帶入預留號的 x, y 來使用,但是使用時需要注意運算的優先級,因為需要帶括號,不規範的使用會讓我們得到我們不需要的結果:
1 |
|
這裡需要把程序的第二行替換成:
1 |
防止傳入 b+2 後,的表達式變成: b+2*b+2 沒有規範好優先級···
宏的參數連接
- 使用 一個井號
#
,把參數轉化為字符串; - 使用 兩個井號 ##,“粘合”參數;
1 |
|
宏的獲得一個字的高位或低位字節
注意,這裡是獲得一個字的高位/低位
- 一個字由兩個字節組成;
- 1個,高位字節;
- 1個,低位字節;
1 |
WORD_LO 中
利用 & 的特性:
- 1&1 = 1;
- 0&1 = 0;
- 1&0 = 0;
& 255 相當於 :任何數據和 0000,0000,1111,111 進行 &運算;
WORD_HI 中
>>
8 ,所參與的數據二進制向右移動8位,原有的右8位不保留。
用宏定義得到一個數組所含元素的個數
1 |
- 數組的總大小 除以 每個類型的大小
#ifdef,#ifndef,#else,#endif
這些宏定義中的判斷實際上和我們日常開發中的 if … else if … else, 都是同理的,注意所有操作需要#endif
來結尾
1 |
|