C 預處理 之 條件編譯

2021-09-01 00:13:31 字數 1601 閱讀 2629

序號描述

1展開所有的標頭檔案

2巨集定義的替換

3解析條件編譯 並新增到檔案中

預處理命令 以符號"#"開頭。

採用 條件編譯,可以減少被編譯的語句,從而減少目標的長度。當 條件編譯 段比較多時,目標程式長度可以大大減少。

序號命令含義

1#if

編譯預處理 的 條件命令,相當於c語言中的 if 語句

2#ifdef

判斷某個巨集是否被定義,如果已經定義,執行隨後的語句

3#ifndef

與 #ifdef 相反,判斷某個巨集是否未被定義

4#elif

若 #if , #ifdef , #ifndef 或前面的 #elif 條件不滿足,則執行 #elif 之後的語句,相當於c語法中的 else-if

5#else

與 #if , #ifdef , #ifndef 對應, 若這些條件不滿足,則執行 #else 之後的語句,相當於c語法中的 else

6#endif

#if , #ifdef , #ifndef 這些條件命令的結束標誌

7#defined

與 #if, #elif 配合使用,判斷某個巨集是否被定義

#if  可支援 同時判斷多個巨集的存在,與 常量表示式配合使用。常用格式如下:

條件編譯 中相對常用的 預編譯指令。模式如下:

在 判斷某個巨集 是否被定義時,應當避免使用 #if ,因為該巨集的值可能就是被定義為0。而應當使用 #ifdef 或 #ifndef 。

C語言預處理之條件編譯

這是stdio.h的頭幾行 if msc ver 1000 pragma once endif ifndef inc stdio define inc stdio if defined win32 defined mac error error only mac or win32 targets s...

預處理 條件編譯

假如現在要開發乙個c語言程式,讓它輸出紅色的文字,並且要求跨平台,在 windows 和 linux 下都能執行,怎麼辦呢?這個程式的難點在於,不同平台下控制文字顏色的 不一樣,我們必須要能夠識別出不同的平台。windows 有專有的巨集 win32,linux 有專有的巨集 linux 以現有的知...

預處理 條件編譯

條件編譯 預處理程式提供了條件編譯的功能。可以按不同的條件去編譯不同的程式部分,因而產生不同的目標 檔案。這對於程式的移植和除錯是很有用的。條件編譯有三種形式 ifdef ifndef if 1 ifdef ifdef 識別符號 程式段1 else 程式段2 endif 或者 ifdef 識別符號 ...