1. 程式人生 > >C語言中的預處理命令

C語言中的預處理命令

情況下 工作 生成 替換 作用域 .com clu pan 器)

預處理功能是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語言中的預處理命令