04-01、預(yù)處理指令——不帶參數(shù)的宏定義

#include <stdio.h>
void test();

/*
 預(yù)處理指令
 什么是預(yù)處理指令:
在我們的文件翻譯成0和1之前做的操作我們稱之為預(yù)處理指令 
一般情況預(yù)處理指令都是以#號(hào)開(kāi)頭的
三種預(yù)處理指令:宏定義、條件編譯、文件包含
 */
/*
 宏定義的格式
1.不帶參數(shù)的宏定義
2.帶參數(shù)的宏定義

 #define 宏名 值

 宏定義的作用:    
會(huì)在程序翻譯成0和1之前, 將所有宏名替換為 宏的值

 宏定義在什么時(shí)候替換
 源代碼 --> 預(yù)處理 -->匯編 -->二進(jìn)制 -->可執(zhí)行程序

 規(guī)范:
 一般情況宏名都大寫(xiě), 多個(gè)單詞之間用_隔開(kāi), 并且每個(gè)單詞全部大寫(xiě)
 有得公司又要求宏名以k開(kāi)頭, 多個(gè)單詞之間用駝峰命名

注意: 
宏定義后面不要寫(xiě)分號(hào)

 宏定義也有作用域
從定義的那一行開(kāi)始, 一直到文件末尾
雖然默認(rèn)情況下宏定義的作用域是從定義的那一行開(kāi)始, 一直到文件末尾. 但是我們也可以通過(guò)對(duì)應(yīng)的關(guān)鍵字提前結(jié)束宏定義的作用域

 宏定義的使用場(chǎng)景:
http://192.168.13.11/login
http://192.168.13.11/accesstoken
http://192.168.13.11/file,,,
#define BASE_URL "http://192.168.13.11/"

獲取屏幕的寬度
獲取手機(jī)系統(tǒng)版本號(hào)
做一個(gè)單利
判斷系統(tǒng)版本
...
 */
#define COUNT 6// ;

//#define CLASS_COUNT 100

int main(int argc, const char * argv[]) {
//    int nums[6] = {1, 3, 5, 7, 9, 11};
// 要求不能動(dòng)態(tài)計(jì)算, 并且要求需求變更只修改一個(gè)地方
//    int length = sizeof(nums) / sizeof(nums[0]);
int nums[COUNT] = {1, 3, 5, 7, 9, 11};


//    for (int i= 0; i < length; i++) {
for (int i= 0; i < COUNT; i++) {
    printf("nums[%i] = %i\n", i, nums[i]);
}

// 提前結(jié)束宏定義的作用域
//#undef COUNT

// 如果宏名寫(xiě)在雙引號(hào)中, 那么不會(huì)被替換
printf("COUNT");

test();
return 0;
}

void test()
{
int ages[COUNT] = {2, 4, 6, 8, 10};
for (int i= 0; i < COUNT; i++) {
    printf("ages[%i] = %i\n", i, ages[i]);
}
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容