1. 程式人生 > >C語言程式設計——9,預處理命令

C語言程式設計——9,預處理命令

    以“#”開頭的預處理命令一般都放在函式之外,而且一般放在原始檔前面,他們成為預處理部分。

    預處理指的是進行編譯的第一遍掃描(語法掃描和語法分析)之前所作的工作。它由預處理程式負責完成。當對一個原始檔進行編譯時,系統自動引用預處理程式對預處理部分進行處理,處理完畢後自動進入對源程式的編譯。

    C語言的預處理功能主要有:

  • 巨集定義
  • 檔案包含
  • 條件編譯

巨集定義

    用一個識別符號來表示字串,稱為“巨集”,識別符號稱為巨集名。在編譯預處理階段,所有巨集名會被巨集定義中的字串替代,稱為“巨集展開”或“巨集代換”。巨集分為無參巨集和有參巨集。

   無參巨集定義

    巨集名後不帶引數

    格式:#define 識別符號 字串


    字串可以是常數、表示式、格式串,為了巨集代換不出現錯誤,字串最好加括號

    巨集定義作用域為巨集定義命令到源程式結束,可以用#undef提前終止作用域

    帶參巨集定義

    格式:#define 巨集名(形參表)    字串

檔案包含

    作用是把指定檔案插入命令列位置取代命令列,從而把指定檔案和當前源程式檔案連成一個原始檔。

    格式:#include "檔名"

              #include <檔名>

    使用<>表示在包含檔案目錄中去查詢(包含目錄是使用者在設定環境時設定的),而不在原始檔目錄查詢。

    使用“”表示首先在當前的原始檔目錄中查詢,若未找到才到包含目錄中去查詢。

條件編譯

    條件編譯功能可以按不同的條件去編譯不同的程式部分,因而產生不同的目的碼檔案。對於程式的移植和除錯很有用。

    三種形式

    1、

  #ifdef 識別符號
      程式段1
  #else            //若程式段2為空,則可以省略
      程式段2
  #endif

    2、

  #ifndef 識別符號    //if no define
      程式段1
  #else            //若程式段2為空,則可以省略
      程式段2
  #endif

3、

  #ifdef 常量表達式  //根據常量表達式的值判斷
      程式段1
  #else            //若程式段2為空,則可以省略
      程式段2
  #endif




    

相關推薦

C語言程式設計——9處理命令

    以“#”開頭的預處理命令一般都放在函式之外,而且一般放在原始檔前面,他們成為預處理部分。    預處理指的是進行編譯的第一遍掃描(語法掃描和語法分析)之前所作的工作。它由預處理程式負責完成。當對一個原始檔進行編譯時,系統自動引用預處理程式對預處理部分進行處理,處理完畢

C語言程式設計--巨集和處理

C語言巨集 巨集定義常量 #include <stdio.h> #define SIZE 100 #define BANNER "WARNING:" int main(void){ printf("%d\n", SIZE); printf("%s\n",BANN

C++學習(二十七)(C語言部分)之 處理命令

world! 條件編譯 *** 所有 表達 自己 函數的參數 .lib 修改 結構體 聯合 枚舉 聯合 只能保存最後賦值的結果枚舉 所有可能值列出來 預處理命令是在編譯前期的階段 代碼-(編譯)-->可執行文件(exe)預編譯 編譯前對代碼處理 *1.插

C語言檔案操作 和 編譯命令

//read檔案 int main(){ char *path = "D:\\friends.txt"; FILE *fp = fopen(path, "r"); char buff[500]; while (fgets(buff,50,fp)){ printf("%s\n", b

《6.C語言巨集定義與處理、函式和函式庫》

《6.C語言巨集定義與預處理、函式和函式庫》 第一部分、章節目錄 4.6.1.C語言預處理理論 4.6.2.C語言預處理程式碼實戰 4.6.3.巨集定義1 4.6.4.巨集定義2 4.6.5.函式的本質 4.6.6.函式的基本使用 4.6.7.遞迴函式 4.6.8.函式庫 4.6.9.字

C語言程式設計給定一個日期輸出這個日期是該年的第幾天

/** C語言程式設計題 給定一個日期,輸出這個日期是該年的第幾天 */ int getIndexOfDay(int year, int month, int day) { int months[12] = {31, 28, 31, 30, 31, 30

C語言程式設計---9:自定義資料型別

/*輸入學生的學號、姓名、性別、年齡、成績、家庭住址,輸出成績較高的學生資訊*/ #include<stdio.h> void main() { struct student

33.C語言巨集定義和處理

33.1.原始碼到可執行程式過程 (1)原始碼.c檔案->(編譯)->elf可執行程式。 (2)原始碼.c->(編譯)->目標檔案.o->(連結)->elf可

C語言程式設計實現浮點型與字元陣列相互轉化

歡迎轉載,請註明出處,本文地址:http://blog.csdn.net/jk050802/article/details/8628764 聯絡郵箱:[email protected] 簡介          從浮點型轉換為字元型:這裡比較簡單,只需要用

9C語言處理命令

() body 重復 分號 stdio.h ifdef 可用 style 處理 預處理命令   基本概念:ANSI C標準規定可以在C源程序中加入一些“預處理命令”,以改進程序設計環境,提高編程效率。   這些預處理命令是由ANSI C同一規定的,但是它們不是C語言本身的組

C語言程式設計 細節總結(第10-11章 檔案、處理命令

第10章 檔案 1.C語言系統把檔案當成一個流,按位元組進行處理 2.檔案按編碼方式分為二進位制檔案和ASCII檔案(文字檔案) 3.用檔案指標標識檔案,開啟檔案可取得該指標 4.對檔案進行操作,開啟->讀寫->關閉 5.檔案開啟方式只有四種:只讀、

C語言中的處理命令

情況下 工作 生成 替換 作用域 .com clu pan 器) 預處理功能是C語言的重要功能。 問:為什麽要預處理,什麽是預處理? 答:我們知道高級語言的運行過程是通過編譯程序(編譯器)把源代碼翻譯成機器語言,實現運行的。編譯程序的工作包含:語法分析、詞法分析、代碼生

C語言處理命令之檔案包含

檔案包含預處理命令的一般形式是: #include<檔名> 或者 #include“檔名” #include命令告訴前處理器用指定檔案的內容替換這條命令,兩種不同的命令格式決定了前處理器對指定檔案的搜尋方式:如果檔名是用一對尖括號括起來的,則前處理器直接到存放編譯器所提供的標準標頭檔案的目

C語言處理命令

1,  #typedef  定義類型別名 2,  #define PI(形參表) 3.14   定義一個表示符和一個字串 3,  #undef  PI  終止巨集定義的作用域 4,  #incl

C++語言程式設計基礎》學習類與物件之多檔案結構和編譯命令​​​​​​​

C++程式的一般組織結構: 一個工程可以劃分為多個原始檔,例如: 類宣告檔案(.h檔案) 類實現檔案(.cpp檔案) 類的使用檔案(main()所在的.cpp檔案) 利用工程來組合各個檔案。Point.h class Point { //類的定義 public:

C語言處理命令詳解

本文參考諸多資料,詳細介紹常用的幾種預處理功能。因成文較早,資料來源大多已不可考證,敬請諒解。全文字數2萬,閱讀時間50分鐘,建議先收藏。 一 前言 預處理(或稱預編譯)是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所作的工作。預處理指令指示在程式正式編譯前就由編譯器進行的操作

c語言編譯過程詳解處理編譯彙編連結(乾貨滿滿)

鍥子 我們在各自的電腦上寫下程式碼,得明白我們程式碼究竟是如何產生的,不想了解1,0什麼的,但這幾個環節必須掌握吧。 我們的程式碼會經過這4個環節,從而形成最終檔案,c語言作為編譯語言,用來向計算機發出指令。讓程式設計師能夠準確地定義計算機所需要使用的資料,並精確地定義在

黑馬程式設計師——————c語言處理命令

一、什麼是預處理指令 1、C語言在對源程式進行編譯之前,會先對一些特殊的預處理指令作解釋,產生一個新的源程式(這個過程稱為編譯預處理),之後再進行通常的編譯 2、為了區分預處理指令和一般的C語句,所有預處理指令都以符號"#"開頭,並且結尾不用分號3、預處理指令可以

1005 - C語言程式設計教程(第三版)課後習題4.9

1005 - C語言程式設計教程(第三版)課後習題4.9 時間限制:1秒 記憶體限制:128兆 題目描述 輸入一個華氏溫度,要求輸出攝氏溫度。公式為 c=5(F-32)/9 輸出要求有文字說明,取位2小數。 輸入 一個華氏溫度,浮點數 輸出 攝氏溫度,浮點兩位小數 樣例輸入 -4

c處理命令偏門知識

1.預處理替換 #define max(x,y) ((x)>(y)?(x):(y))用來代替函式 2.預處理代替列印 #define print(A) printf("%s=%d",#A,A)用來將識別符號及其所代表的數值打印出來 3.預處理連線符 #defin