資源描述:
《標準c中預(yù)定義的宏》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、[轉(zhuǎn)載]c/c++標準預(yù)定義宏2009-08-2214:40http://www.cnblogs.com/sevencat/archive/2004/06/10/14872.html一、標準預(yù)定義宏Thestandardpredefinedmacrosarespecifiedbytherelevantlanguagestandards,sotheyareavailablewithallcompilersthatimplementthosestandards.Oldercompilersmaynotprovideallofthem.Theirnamesallstartwithdoubleun
2、derscores.__FILE__Thismacroexpandstothenameofthecurrentinputfile,intheformofaCstringconstant.Thisisthepathbywhichthepreprocessoropenedthefile,nottheshortnamespecifiedin#includeorastheinputfilenameargument.Forexample,"/usr/local/include/myheader.h"isapossibleexpansionofthismacro.__LINE__Thismacroex
3、pandstothecurrentinputlinenumber,intheformofadecimalintegerconstant.Whilewecallitapredefinedmacro,it'saprettystrangemacro,sinceits"definition"changeswitheachnewlineofsourcecode.__FILE__and__LINE__areusefulingeneratinganerrormessagetoreportaninconsistencydetectedbytheprogram;themessagecanstatetheso
4、urcelineatwhichtheinconsistencywasdetected.Forexample,????fprintf(stderr,"Internalerror:"?????????????????????"negativestringlength"?????????????????????"%dat%s,line%d.",?????????????length,__FILE__,__LINE__);????An#includedirectivechangestheexpansionsof__FILE__and__LINE__tocorrespondtotheincluded
5、file.Attheendofthatfile,whenprocessingresumesontheinputfilethatcontainedthe#includedirective,theexpansionsof__FILE__and__LINE__reverttothevaluestheyhadbeforethe#include(but__LINE__isthenincrementedbyoneasprocessingmovestothelineafterthe#include).A#linedirectivechanges__LINE__,andmaychange__FILE__a
6、swell.SeeLineControl.C99introduces__func__,andGCChasprovided__FUNCTION__foralongtime.Bothofthesearestringscontainingthenameofthecurrentfunction(thereareslightsemanticdifferences;seetheGCCmanual).Neitherofthemisamacro;thepreprocessordoesnotknowthenameofthecurrentfunction.Theytendtobeusefulinconjunc
7、tionwith__FILE__and__LINE__,though.__DATE__Thismacroexpandstoastringconstantthatdescribesthedateonwhichthepreprocessorisbeingrun.Thestringconstantcontainselevencharactersandlookslike"Feb121996".Ifthedayofthemonth