預處理命令是在c源程序編譯之前進行的
⑴ C語言裡面的這個#include <stdio.h>什麼意思啊
#include<stdio.h>是在程序編譯之前要處理的內容,稱為編譯預處理命令。編譯預處理命令還有很多,它們都以「#」開頭,並且不用分號結尾。
stdio.h是頭文件,標准輸入輸出函數庫。頭文件是擴展名為.h的文件,包含了 C 函數聲明和宏定義,被多個源文件中引用共享。
有兩種類型的頭文件:程序員編寫的頭文件和編譯器自帶的頭文件。
在程序中要使用頭文件,需要使用 C 預處理指令#include來引用它。stdio.h頭文件,它是編譯器自帶的頭文件。
引用頭文件相當於復制頭文件的內容,但是我們不會直接在源文件中復制頭文件的內容,因為這么做很容易出錯,特別在程序是由多個源文件組成的時候。
(1)預處理命令是在c源程序編譯之前進行的擴展閱讀
程序設計語言的預處理的概念:在編譯之前進行的處理。 C語言的預處理主要有三個方面的內容:宏定義;文件包含;條件編譯。 預處理命令以符號「#」開頭。
頭文件的內容除了函數原型和宏定義外,還可以有結構體定義,全局變數定義:
一個#include命令指定一個頭文件;
文件1包含文件2,文件2用到文件3,則文件3的包含命令#include應放在文件1的頭部第一行;
包含可以嵌套;
<文件名>稱為標准方式,系統到頭文件目錄查找文件,"文件名"則先在當前目錄查找,而後到頭文件目錄查找;
被包含文件中的靜態全局變數不用在包含文件中聲明。
⑵ c++預處理命令有什麼用 如#include "stdafx.h"是什麼意思
程序設計語言的預處理的概念:在編譯之前進行的處理。 C語言的預處理主要有三個方面的內容: 1.宏定義; 2.文件包含; 3.條件編譯。 預處理命令以符號「#」開頭。
1.不帶參數的宏定義:
宏定義又稱為宏代換、宏替換,簡稱「宏」。
格式:
#define標識符 字元串
其中的標識符就是所謂的符號常量,也稱為「宏名」。
預處理(預編譯)工作也叫做宏展開:將宏名替換為字元串。
掌握"宏"概念的關鍵是「換」。一切以換為前提、做任何事情之前先要換,准確理解之前就要「換」。
即在對相關命令或語句的含義和功能作具體分析之前就要換:
例:
#define PI 3.1415926
把程序中出現的PI全部換成3.1415926
2.帶參數的宏:
除了一般的字元串替換,還要做參數代換
格式:
#define 宏名(參數表) 字元串
例如:#define S(a,b) a*b
area=S(3,2);第一步被換為area=a*b; ,第二步被換為area=3*2;
二. 文件包含一個文件包含另一個文件的內容
格式:
#include "文件名"
或
#include <文件名>
編譯時以包含處理以後的文件為編譯單位,被包含的文件是源文件的一部分。
編譯以後只得到一個目標文件.obj
被包含的文件又被稱為「標題文件」或「頭部文件」、「頭文件」,並且常用.h作擴展名。
修改頭文件後所有包含該文件的文件都要重新編譯
頭文件的內容除了函數原型和宏定義外,還可以有結構體定義,全局變數定義:
⑶ 預處理指令有什麼作用
程序設計語言的預處理是指在編譯之前進行的處理,C語言的預處理主要包括宏定義、文件包含和條件編譯三個方面。
宏定義,也稱宏代換、宏替換,是將標識符替換為字元串的過程。其格式為:#define 標識符 字元串。宏名通常用大寫,使用宏可以提高程序的通用性和易讀性,減少不一致性,減少輸入錯誤並便於修改。例如,數組大小常用宏定義。宏定義不分配內存,變數定義分配內存,宏定義末尾不加分號,寫在函數的花括弧外邊,作用域為其後的程序,通常在文件的最開頭。可以用#undef命令終止宏定義的作用域,宏定義可以嵌套,字元串" "中永遠不包含宏。
帶參數的宏除了進行字元串替換外,還要進行參數代換。其格式為:#define 宏名(參數表) 字元串。例如,#define S(a,b) a*b area=S(3,2);第一步被換為area=a*b;,第二步被換為area=3*2;。類似函數調用,有一個啞實結合的過程。實參如果是表達式容易出問題,正確的宏定義是#define S(r) (r)*(r)。宏名和參數的括弧間不能有空格,宏替換只作替換,不做計算,不做表達式求解。函數調用在編譯後程序運行時進行,並且分配內存,宏替換在編譯前進行,不分配內存。宏的啞實結合不存在類型,也沒有類型轉換,函數只有一個返回值,利用宏則可以設法得到多個值。宏展開使源程序變長,函數調用不會。
文件包含是指一個文件包含另一個文件的內容,其格式為:#include "文件名" 或 #include 。編譯時以包含處理以後的文件為編譯單位,被包含的文件是源文件的一部分,編譯以後只得到一個目標文件.obj。被包含的文件又被稱為「標題文件」或「頭部文件」、「頭文件」,並且常用.h作擴展名。修改頭文件後所有包含該文件的文件都要重新編譯。頭文件的內容除了函數原型和宏定義外,還可以有結構體定義,全局變數定義。
條件編譯允許在條件滿足時才編譯某些語句。其格式為:#ifdef 標識符 程序段1 #else 程序段2 #endif 或 #ifdef 程序段1 #endif。當標識符已經定義時,程序段1才參加編譯。格式為:#ifndef 標識符。格式為:#if 表達式1 程序段1 #elif 表達式2 程序段2 …… #elif 表達式n 程序段n #else 程序段n+1 #endif。當表達式1成立時,編譯程序段1,當不成立時,編譯程序段2。使用條件編譯可以使目標程序變小,運行時間變短。預編譯使問題或演算法的解決方案增多,有助於我們選擇合適的解決方案。此外,還有布局控制:#pragma,這也是我們應用預處理的一個重要方面,主要功能是為編譯程序提供非常規的控制流信息。