C語言中的預處理命令
預處理功能是C語言的重要功能。
問:為什麽要預處理,什麽是預處理?
答:我們知道高級語言的運行過程是通過編譯程序(編譯器)把源代碼翻譯成機器語言,實現運行的。編譯程序的工作包含:語法分析、詞法分析、代碼生成、代碼優化等。但是在正式編譯之前還有一些工作要做,例如:去掉註釋、變換格式之類的。C語言允許在源程序中包含預處理命令,正式編譯(詞法分析)前,先對這些命令進行“預處理”;然後在進行通常的編譯處理。預處理命令從語法上講不是C語言的一部分,但擴展了C語言程序設計的環境,簡化程序開發過程;有利於移植和調試C語言程序。
預處理命令的定義:
以#開頭,換行符結尾的行稱為預處理命令;預處理命令不是C語言的語法成分,而是傳給編譯程序的各種指令;預處理命令分為三種:宏定義、文件包含、條件編譯
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
宏定義:
定義一個標識符來代表一個字符串;這種標識符稱為宏名(macro name);
在源程序中發現該標識符時,都用該字符串替換,形成新的源程序;將標識符替換成指定字符串的過程稱為宏替換(macro substitution);
宏替換的操作是在預編譯時進行的;
說白了就是將一個變量強制定義為你想要的值。
註意點:
1)全部用大寫,以便與變量區分,幫助讀者快速識別;
2)最好把所有宏定義命令放在文件的最前面;
如果需要終止宏的作用域,可以使用#undef命令;格式為: #undef 標識符
應用舉例:
#define PI 3.14 就是將PI的值定義成3.14,這樣在程序裏看到PI就可以替換成3.14了
參考鏈接:
#define的用法詳解:https://www.cnblogs.com/shmilxu/p/4837373.html
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
文件包含:
用法:
#include <包含文件名> 或 #include "包含文件名"
作用:
將另一個文件全部包含進來;
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
條件編譯:
一般情況下,源程序中所有的語句都參加編譯;但是有時候也希望根據一定的條件去編譯源文件的不同部分;
有時候一個C文件會多次包含同一個頭文件,就可能出現重復定義的問題;
這時候可以通過條件編譯來避免重復定義(重復包含);
#ifndef __headerfileXXX__
#define __headerfileXXX__
…
文件內容
…
#endif
#ifndef 和 #endif 要一起使用,如果丟失#endif,可能會報錯。
參考鏈接:
#ifndef, #define, #endif 作用:https://www.cnblogs.com/challenger-vip/p/3386819.html
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
C語言中的預處理命令