1 標(biāo)準(zhǔn)庫中的頭文件
C++標(biāo)準(zhǔn)庫中的一切內(nèi)容都被放在名字空間std中(名字空間中的內(nèi)容對外是不可見的),但是帶來了一個新問題,無數(shù)現(xiàn)有的C++代碼都依賴于使用了多年的偽標(biāo)準(zhǔn)庫中的功能,如聲明在<iostream.h>等頭文件中的功能,使用std包裝標(biāo)準(zhǔn)庫導(dǎo)致現(xiàn)有代碼的不可用,為了兼容這種情況,標(biāo)準(zhǔn)委員會為包裝了std的那部分標(biāo)準(zhǔn)庫創(chuàng)建了新的頭文件,新的頭文件的文件名與舊的一樣,只是沒有.h這個后綴,如<iostream.h>就變成了<iostream>。對于C頭文件,采用同樣的方法,但還在每個頭文件名前加了字符c,如<string.h>就變成了<cstring>,<stdio.h>變成了<cstdio>。最好使用新的文件頭,使用新的文件頭的C++程序,需要使用using namespace std或者using namespace std::指定的類名,等方法來使需要的類對于我們的代碼可視。
2 自定義的頭文件
為了防止頭文件被重復(fù)引用,最好使用預(yù)處理定義,如下所示:
#ifndef MYHEAD_H#define MYHEAD_H……//頭文件中的內(nèi)容#endif
(1)#ifndef:
指示符#ifndef用來檢查頭文件的內(nèi)容是否在前面已經(jīng)被定義過,如果定義過,則#ifndef與#endif之間的語句將不被執(zhí)行.所以習(xí)慣上要把頭文件的定義寫在這兩個語句之間.
如:對于MYHEAD.H這個頭文件
#ifndef MYHEAD_H#define MYHEAD_H#include "myhead.h" ......#endif
(2) #ifdef
指示符#ifdef常常被用來判斷一個預(yù)處理器常量是否已被定義,以便有條件地包含程序代碼。
如:
int main() { #ifdef DEBUG cout<<"Beginning execution of main()/n"; #endif string word; vector<string> text; while(cin>>word) { #ifdef DEBUG cout<<"word read:"<<word<<"/n"; #endif text.push_back(word); } //..... }在此程序中,如果定義了DEBUG,則其中包含的兩個語句都將被執(zhí)行,如果沒有定義,則其中的兩個輸出語句不被執(zhí)行。
3 預(yù)處理相關(guān)知識
(1) #ifdef :判斷一個預(yù)處理常量是否被定義,如#infef DEGUG
(2) #ifndef:判斷一個預(yù)處理常量是否沒被定義
(3) #define:定義一個預(yù)處理常量,如#define DEBUG
(4) #include
(5) #endif
(6) 對預(yù)處理常量的定義還可以在編譯時進(jìn)行,如CC
主站蜘蛛池模板:
利津县|
大竹县|
正镶白旗|
清河县|
山阴县|
保德县|
浦江县|
聊城市|
申扎县|
积石山|
包头市|
隆德县|
保定市|
重庆市|
昌都县|
富裕县|
若羌县|
西昌市|
靖西县|
枞阳县|
太保市|
博爱县|
金平|
宁河县|
绵阳市|
漾濞|
林西县|
天祝|
通江县|
曲靖市|
南城县|
龙游县|
南宫市|
基隆市|
新津县|
元朗区|
探索|
务川|
涿鹿县|
徐水县|
伊吾县|