日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言中预处理指令的作用,C语言中常用预处理指令

發布時間:2025/3/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言中预处理指令的作用,C语言中常用预处理指令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自 https://blog.csdn.net/farsight2009/article/details/58602886

姓名:張艷博 學號:17021223249

【嵌牛導讀】: C語言中常用預處理指令介紹

【嵌牛鼻子】:C語言? 預處理? 條件編譯

【嵌牛提問】:怎樣了解C語言中常用預處理指令

【嵌牛正文】:

預處理:對一些預處理命令進行執行的過程 預處理命令:頭文件包含;宏定義等,用#開頭的一些命令。 在C語言中預處理命令不會直接被編譯,而是在編譯這些預處理命令時,將這些預處理命令進行解析,然后將預處理結果替換成真正的C語言能編譯的C語句。 如: #define PI 3.14 在編譯之前,預處理命令define會自動將程序中所有的PI替換成3.14.在編譯時程序中是不會在存在預處理命令的。

一)宏定義 (1)不帶參數的宏定義 如: #define PI 3.14 ①可以用宏定義來定義一個常量來設置一個數組的長度 #define arrr_len 100 int a[arrr_len] ②宏定義只是簡單的替換,而不做正確性的檢查,如果有#define 3.l4中的‘1’寫成‘l’也不會報錯,他只是簡單的替換 如:#define N 3; 他就會將N替換成“3;”包括分號,因為宏定義,會將符號常量的任何東西都將看成一個字符串并替換掉 ③通常宏定義出現在程序的開頭,這個宏定義的作用域是本源文件。 ④如果想要解除宏定義的作用域,就在你需要解除的地方加上: #undef XXX ⑤宏定義可以在定義的時候就層層替換 如: #define PI 3.14 #define R 5; #define L 2*PI*R 注意:在宏定義的時候只是將這個看成字符串,做簡單的替換,而不會做運算。 ⑥ 在程序中如果在字符串中出現與宏名一樣的字符,不會做替換 如: #define L = 2*3.14 Printf(“L=%d”,L); (2)帶參數的宏定義 (1)#define s(a,b) a*b S(2,3)替換成 2*3 (2) #define PI 3.14 #define S(r) PI*(r)*(r) 程序中:S(2+3) 替換成 3.14*2*2 (3) #define PI 3.14 #define S(r) PI*r*r 則s(2+3)可以替換成: 3.14*2+3*2+3 (4) (4)#define PI 3.14 #define S(r) PI*(r)*(r) 則s(2+3)可以替換成: 3.14*(2+3)*(2+3) (5)#define D "%d" #define D1 "\n" #define D2 D D D1 printf(D2,5,6); 等價于 printf(“%d” “%d” “\n”,5,6)等價printf(“%d%d\n”,5,6)

二) 頭文件包含 #include 或者 #include “xxxx.h” 頭文件包含的使用方式: ①可以將多文件編程的所有頭文件專門寫入一個文件,然后在每一個文件中引用這個文件即可。 ② 專門在一個文件中將所有類型的printf利用宏定義表示,只需要在每一個文件中引入這個頭文件即可。 注意: ①如果在文件1要包含文件2,而文件2要用到文件3;而文件2只是被文件1包含時,只需要在文件1中包含文件2和文件3,并且文件3的包含在文件2的前面。 ②文件1包含文件2,文件2包含文件3,只需要在相應的文件中包含該文件即可。 ③ 如果包含的頭文件不再當前目錄中,就需要指定路徑 #include “D:\works\daima\farmat.h”

三) 條件編譯 定義:在C源碼中,基本上所有的代碼都要參與編譯的過程,編譯也是耗費時間的過程,因此我們在編譯大量的C源碼時,可以根據需要對一些源碼進行編譯 #define 標識符 1 #ifdef 標識符 程序段1; #else 程序段2; #endif (紅色的部分是可選部分,是可以省略的) 作用:如果ifdef后面的標識符是被#define定義過,則程序段1將會被編譯,否則程序段2將會被編譯。 例子: #include #define int_16 int main(int argc, char *argv[]) { #ifdef int_32 printf("int is:32"); #else printf("int is:16"); #endif return 0; } 注意:#define int_32這個宏,后面可以是任意的字符,符號。或者什么都沒有。 #define 標識符 #ifndef 標識符 程序段1; #else 程序段2; #endif (紅色的部分是可選部分,是可以省略的) (1) #if 表常量達式 程序段1; #else 程序段2; #endif (紅色的部分是可選部分,是可以省略的) (2)嵌套 #if 表常量達式1 程序段1; #else #if 表常量達式2 程序段2; #else 程序段3; #endif #endif (5)#if 表常量達式1 語句段1; #elif 表常量達式2 語句段2; #elif 表常量達式3 語句段3 #else 語句段4 #endif 四)C語言的內嵌宏 C語言的內嵌宏 C語言的內嵌宏 __DATE__ :編譯器當前編譯此源文件的日期 __FILE__:當前源文件的文件名 __LINE__:當前語句所在代碼的行號(調試很重要) __func__當前語句所在源碼的哪一個函數中

總結

以上是生活随笔為你收集整理的c语言中预处理指令的作用,C语言中常用预处理指令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。