程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 預處理命令,預處理

預處理命令,預處理

編輯:C++入門知識

預處理命令,預處理


轉載自:http://www.cnblogs.com/kykuaileren/archive/2011/09/09/2172801.html 根據已放置在文件中的預處理指令來修改源文件的內容,預處理器會分析並執行所有的預處理指令,然後刪除他們,得到一個僅包含C++語句的轉換單元,預處理指令以“#”號開頭

 

常見的預處理指令:

1、#include 包含頭文件(頭文件一般包含函數原型與全局變量)

形式常有下面兩種

#include<iostream> 引用標准頭文件,只搜索標准庫頭文件的默認目錄

#include “myheader.h”

引用自定義的頭文件,搜索正在編譯的源文件所在的目錄,找不到時再搜索包含標准庫頭文件的默認目錄

2、#define 定義符號、宏

如:#define PI 3.1415925 // 定義符號常量PI為3.1415925,後面不加分號

在編譯前,預處理器會遍歷代碼,在它認為置換有意義的地方,用字符串PI的定義值(3.1415925)來代替,在注釋或字符串中的PI不進行替換

#undef刪除#define定義的符號

如:

#define PI 3.14159265
......
// 之間所有的PI都可以被替換為3.14159265

#undef PI
//之後不再有PI這個標識符

但是在C++中最好使用const來定義變量,如上面的定義可改為:

const long double PI=3.1415925;

兩者比較下,前者沒有類型的指定,容易引起不必要的麻煩,而後者定義清楚,所以在C++中推薦使用const來定義常量

#define的缺點:

1)不支持類型檢查

2)不考慮作用域

3)符號名不能限制在一個命名空間中

3、#indef,#ifndef,#endif

#ifdef 如果宏被定義就進行編譯 #ifndef 如果宏未被定義就進行編譯 #endif

結束編譯塊的控制

4、#if,#else

#if 表達式非零就對代碼進行編譯 #else 作為if為假的選項對代碼進行編譯

5、#error

輸出一個錯誤信息

6、#pragma

為編譯程序提供非常規的控制流信息

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved