學(xué)習(xí)-代碼審查pclint使用手冊(cè)_第1頁(yè)
學(xué)習(xí)-代碼審查pclint使用手冊(cè)_第2頁(yè)
學(xué)習(xí)-代碼審查pclint使用手冊(cè)_第3頁(yè)
學(xué)習(xí)-代碼審查pclint使用手冊(cè)_第4頁(yè)
學(xué)習(xí)-代碼審查pclint使用手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩131頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PC-Lint簡(jiǎn): 第工具安 PC-lint執(zhí)行程序 PC-lint配置程序 打印工具 PC-lint 保存PC-lint檢查代碼后輸出的錯(cuò)誤信息,可用”記事本”Lnt\... 非ANSI 非ANSI 各種編輯環(huán)境如'sVisualStudio的配置文 作者檢查項(xiàng)的配置文件,指ScottMeyers的EffectiveC++,MoreEffectiveC++,Misra,DanSaks的C++Gotchas 配 file2lin.bat的內(nèi)容: -iConfDirstd.lnt&1&2Abatchfilewhich sobecopiedintoyourPATHandwhichcontainsareferenceSTD.LNTAnindirectlintfilethatwill"pointto"acompileroptionsfileandanoptionsfileandoptionallyotherfilesandoptions.AsequenceofdifferentversionsofSTD.LNTthatthewizardcanchoosefromAconvenientcentrallylocatedoptionsfilethatyouwilltendtouseformostofyourAbatchfileoptionallygeneratedtobeusedtoplacethePC-lintexecutableinyour Compileroptionsfile(s) Environmentoptionsfiles Libraryoptionsfiles Headersreferencedbylib-....lntau- Optionsfilesfor mended Apairoftestprogramsdescribedinthenext運(yùn)試程 fileafilea和fileb//lint-w2reducethewarninglevelto2classX{staticintclass{intPC-lintforC/C++(NT)Vers.8.00,Copyright---Module:---Module:_fileb.cpp4Warning631:tagXdefineddifferentlyatline3,file---GlobalWrap-Warning1527:staticmemberX::a(line5,filefilea.cpp)notlint使用PC-Lint檢查程序代 alpha.cppbeta.ccheckout 用+fcpC++ a1.ca2.c - a4.c用+cppC++ + a1.cca2.cca3.c用-u(Error 2 - - 創(chuàng)建文件alphabet.lnt:linIDE整env- Borland's5.0env- Borland's4.0IDEunderenv- Premiaenv- 'sProgrammer'sWorkenv- SourceInsightenv- VisualSlickenv- Turbo/BorlandIDEunderenv- 'sVisualC/C++,Versionenv- 'sVisualC/C++,Versionenv- 'sVisualC/C++,Versionenv- 'sVisualC/C++,Version…從.dsplint project.dsp -v1project.dspCFG+d"CFG=project-Win32建議放到單獨(dú)的.lnt文件,例如+d"CFG=project-Win32從.dsplint project.dsp>lin--uproject.lntThiswilldoaunitcheckusingalltheoptionswithinproject.lntbutnoneofthemodules.Onlyalpha.cppwillbeprocessed.Lint命令lintoptionsfile1[file2file3...文件名支持.*,*.c表示檢查指定 下的所有.c文件。也可以使用.lnt文件來包括C和C++文件。.lntCC++風(fēng)格的注釋,如/*…*/和C:\lintpp\lint-iC:\lintppstd.lnt%1%2%3.lntstd.lnt:退出代碼(ExitCodeExitCodelint...usualargumentsiferrorlevel1gotolint選項(xiàng)設(shè)置lint/*lintoption1option2...optionalcommentary//lintoption1option2...optional在宏中指定lint選項(xiàng),例如下面指定lint查除零錯(cuò)誤#defineDIVZERO(x)/*lint-save-e54*/((x)/0)\/*lint-restore#defineDIVZERO(x)((x)//#defineDIVZERO(x)/*lint-save-e(54,414,522)*/((x)/0)/*lint-restore#include"stdafx.h"#includevoid{intres=}void{inta=100;intb=0;intres=}PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985----Module: intres=DIVZERO(1);D:\PC-Lint\MyTest\Test1\Test1.cpp(9):error414:(Warning--Possibledivisionby0[Reference:fileD:\PC-Lint\MyTest\Test1\Test1.cpp:line9])}D:\PC-Lint\MyTest\Test1\Test1.cpp(10):error529:(Warning--Symbol'res'(line9)notsubsequentlyreferenced)intres=D:\PC-Lint\MyTest\Test1\Test1.cpp(16):error414:(Warning--Possibledivisionby0[Reference:fileD:\PC-Lint\MyTest\Test1\Test1.cpp:line15])}D:\PC-Lint\MyTest\Test1\Test1.cpp(17):error529:(Warning--Symbol'res'(line16)notsubsequentlyreferenced)---GlobalWrap-error900:(Note--Successfulcompletion,5messagesToolreturnedcode:#defineforif(0){}else//#definefor/*lint-e(506,774)*/if(0){}else//lint+e774#include"stdafx.h"#includecharCheryl[]=int{charintnaughty=intprevious=for(p=Cheryl;*p;p++{//intprevious= /*previousbehaviorwas'g'if(*p=='b'&&previous=='b')naughty++;elseif(*p=='b')previous='b';elseprevious=}if(naughty)printf("Cherylhasbeennaughty%dtimes\n",naughty);return0;}PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985----Module: {}elseforfor(p=Cheryl;*p;p++D:\PC-Lint\MyTest\Test1\Test1.cpp(15):error506:(Warning--ConstantvalueBoolean) {}elseforfor(p=Cheryl;*p;p++D:\PC-Lint\MyTest\Test1\Test1.cpp(15):error774:(Info--Booleanwithin'if'alwaysevaluatestoFalse[Reference:fileD:\PC-Lint\MyTest\Test1\Test1.cpp:line15])--- ---GlobalWrap-error900:(Note--Successfulcompletion,2messagesToolreturnedcode:在宏定義中添加Options檢查#definefor/*lint-e(506,774)*/if(0){}elseIfyouare#defineTRUEyouwillreceivethe506--"ConstantValuewhenTRUEisusedinanarithmeticexpression.(ForC,TRUEshouldbedefinedtobe1.However,otherlanguagesusetiesotherthan1sosomeprogrammersfeelthat!0isplayingitsafe.)Tosuppressthismessageforjustthiscontextyoucanuse:#defineTRUE/*lint-save-e506*/(!0)\/*lint-restoreorthe-emacro(506,#include"stdafx.h"#defineTRUE!0//#defineTRUE/*lint-e506*/(!0)/*lint-restore*/intmain(){boola=if(a==return}PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985----Module: if(a==TRUE)---GlobalWrap-error900:(Note--Successfulcompletion,1messagesToolreturnedcode:-emacro(506,lintsavelintrestore#include"stdafx.h"#defineTRUE!0intmain(){boola=//lint-save-e506if(a==TRUE)//lint-restoreboolb=1;return}錯(cuò)誤選PC-lint5.2小節(jié)1、規(guī)則lint-e7202、除1526外的所有規(guī)則lint-e???? lint-epp-eau- willinhibiterrorsarisingfrompointer-pointerclashesandunsignedargumentsandwillsuppresscomplaintsaboutalphanotbeingdefined./*lint-esym(530,a)*/#include"stdafx.h"void{char//char*a="oworld!\n";}Theseparatesettingoftheseparametersisnotnormallynecessaryasthedefaultsettingsareconsistentwithmostcompilersinyourenvironment.Usethesizeoptionsforspecifyingarchitecturesotherthanthenativearchitectures.Forexample,ifyouarelintingforanembeddedsystemwhereintandpointersarenormally16bitsyoushouldspecifylint-si2-sp2PC-lint5.3- //integersare4- //pointersare4bytes1KB=10241字節(jié)=8位PC-lint5.4 +voffile1file2PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985----Module: Line1:Option:+vofIncludingfileD:\PC-Lint\MyTest\Test1\stdafx.h(hdr)Line1:Option:+vofIncludingfileC:\ProgramFiles\ VisualStudio\VC98\Include\stdio.h(library)IncludingfileC:\Program --- ---Module: Line0:Option:+rw(inline)IncludingfileD:\PC-Lint\MyTest\Test1\stdafx.h(hdr)Line0:Option:+rw(inline)IncludingfileC:\ProgramFiles\ VisualStudio\VC98\Include\stdio.h(library)IncludingfileC:\Program ---GlobalWrap-error900:(Note--Successfulcompletion,0messagesToolreturnedcode:標(biāo)記選項(xiàng)PC-lint5.5例如,對(duì)于下面代碼,如果fpn標(biāo)記設(shè)置為ON,所有指針參數(shù)都被假設(shè)可能為//lint+fpn#include"stdafx.h"voidf(char*p,char*q{*p=3;//warningonlyif+fpnq++;//warningonlyif+fpn}voidg(char*p,char*q{if(p&&q{*p=3;//nowarningq++;//nowarning}} Char-is-Unsignedflag(defaultOptions:+fcu-fcu++fcu--IfthisflagisON,plainchardeclarationsareassumedtobeunsigned.Thisisusefulforcompilers,which,bydefault,treatcharasunsigned.NotethatthistreatmentisspecificallyallowedbytheANSIstandard.Thatis,whethercharisunsignedorsignedisuptothe#includevoid{chara=}PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985----Module: chara=128;D:\PC-Lint\MyTest\Test1\Test1.cpp(5):error569:(Warning--Lossofinformation(initialization)(8bitsto7bits))}D:\PC-Lint\MyTest\Test1\Test1.cpp(6):error529:(Warning--Symbol'a'(line5)notsubsequently---GlobalWrap-error900:(Note--Successfulcompletion,2messagesToolreturnedcode://lint#includevoid{chara=}charsignedcharunsignedcharsignedchar,8位的話取值范圍是-128..127unsignedcharHeightThedefaultheightoptionis-TheoptionalmnrequestsNoMacrodisplay.Normally,thevalueofeachopenmacroatthetimeoftheerrorisshownonasepara ine,providedthemessageheight(i.e.thevalueofN)isatleast3.Thelineisbydefaultprefixedwith"#...".#include#definefoo(a,b)intn=PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985----Module: intn=intn=D:\PC-Lint\MyTest\Test1\Test1.cpp(5):error414:(Warning--Possibledivisionby0[Reference:fileD:\PC-Lint\MyTest\Test1\Test1.cpp:line5])---GlobalWrap-error900:(Note--Successfulcompletion,2messagesproduced)Toolreturnedcode:2//lint-hmn#include"stdafx.h"#definefoo(a,b)intn=PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985----Module: intn=foo(4,0);D:\PC-Lint\MyTest\Test1\Test1.cpp(6):error414:(Warning--Possibledivisionby0[Reference:fileD:\PC-Lint\MyTest\Test1\Test1.cpp:line6])---GlobalWrap-error900:(Note--Successfulcompletion,2messagesToolreturnedcode:- MakesureweALWAYSprovidefileinformation('F')anduse lines(lineinerrorplusWidth-width(79,4)isthedefault-width(0) don'tbreakmessagesatanyparticularFormatForexamplethedefaultmessageformat-"format=%(%f%l%)%t%n:-"format=%(%F(%l):%)error%n:(%t-- Messageswill fileinformation(%F),thelinenumber(%l), messagenumber(%n),messagetype(%t)andmessagetextappend-append(errno,string-append(936,-XCorp.SoftwarePolicy371Thepurposeofthisoption,astheexamplesuggests,istoaddadditionalinformation,toamessage,thatcouldbeusedtosupportacompanyorstandardsbodysoftwarepolicy.whenmessage936isissued,theprogrammercanseethatthishassomethingtodowithSoftwarePolicy371.TheprogrammercanthenlookupPolicy371andobtainsupplementaryinformationaboutthepracticethatistobeavoided.indicatesthattheprogrammerisawareofthefactthatflowofcontrolisfallingthroughfromonecase(ordefault)ofaswitchtoanother.WithoutsuchanoptionMessage825willbeissued.Forexample:casecase2:n=0;//settingnto0case3:n++;willresultinInfo825oncase3becausecontrolisfallingthroughfromthestatementabove,whichisneitheracasenoradefault.Thecureistousethe-fallthroughoption:case1:case2:n=0;//settingnto//lint-fallthroughcase3:n++;Warning616willbeissuedifnocommentatallappearsbetweenthetwocases.Ifthisisadequateprotection,thenjustinhibitmessage825.- Presumethattabsareevery4Allcompilersareslightlydifferentowinglargelytodifferencesinlibrariesandpreprocessorvariables,ifnottodifferencesinthelanguageprocessed.ForPC-lint,thekeytocowiththesedifferencesistheselectionand/ormodificationofoneortwocompiler-specificfilesprovidedonthedistributiondiskette.lintco- module1module2...編譯器適配文件在InstallDIR\co 例如co-msc60.lnt:#include"stdafx.h"#includevoid{ i,k,fp=fopen("data.dat","w+");{for(i=1;i<6;{ }fscanf(fp,"%d%d",&k,printf("%d%d\n",k,n);}}PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985----Module: D:\PC-Lint\MyTest\Test1\Test1.cpp(13):error534:(Warning--Ignoringreturnvalueoffunction'fprintf(struct_iobuf*,constchar*,...)'(comparewithline310,fileC:\ProgramFiles\D:\PC-Lint\MyTest\Test1\Test1.cpp(15):error534:(Warning--Ignoringreturnvalueoffunction'fprintf(struct_iobuf*,constchar*,...)'(comparewithline310,fileC:\ProgramFiles\VisualStudio\VC98\Include\stdio.h))D:\PC-Lint\MyTest\Test1\Test1.cpp(20):error534:(Warning--Ignoringreturnvalueoffunction'fclose(struct_iobuf*)'(comparewithline285,fileC:\ProgramFiles\Visual---GlobalWrap-error900:(Note--Successfulcompletion,3messagesToolreturnedcode:ANSIC一共有32個(gè)關(guān)鍵字,它們分別是autobreakcasecharconstcontiunedefau odoubleelseenumexternfloatfotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhileInadditiontothelanguage-definedkeywords,thecompilershaveaddedovertheyearsanumberofnon-standardkeywords,whichhave eknownastheKeywords.ThesearelistedinSection5.8.2CompilerCodesundertheoption"-cmsc".Thekeywordshave esoprevalentinC/C++compilerssupportingoperatingsystemsfollowingstandardsthatitissomewhatsafertoincludethemthantoexcludethem.+rw( //activatetheinline //activate-+rw(_asm,AnothersequenceForthis+ppw(asm,endasm)is+pragma(asm,+pragma(endasm,Yetanotherconvention#pragmaasm#pragmaendasmForthisyouneedtodefinethetwopragmas+pragma(asm,+pragma(endasm,庫(kù)- //setsthewarninglevelwithinlibraryheadersto//(nowarnings,justsyntax Commentoutif//areactuallylintinglibrary //optionmakesobsoleteoptionsoftheform- ) >=400 ayberetainedforhistoricalPC-Lint將頭文件作為庫(kù)文件處理?6.1//lint-//lint-//lint-#include<stdafx.h>#include"stdio.h"voidmain(){printf( oworld\n"}PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985----Module: Includingfilestdafx.h(library)IncludingfileC:\Program ---GlobalWrap-error900:(Note--Successfulcompletion,0messagesToolreturnedcode:stdafx.h//lint-//lint-//lint-//lint-libclass(foreign)#include<stdafx.h>#include"stdio.h"voidmain(){printf( oworld\n"}PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985----Module: Includingfilestdafx.h(hdr)IncludingfileC:\ProgramFiles\VisualStudio\VC98\Include\stdio.h---GlobalWrap-stdafx.h(13):error755:(Info--globalmacro'WIN32_LEAN_AND_MEAN'(line13,filestdafx.h)notreferenced)error900:(Note--Successfulcompletion,1messagesToolreturnedcode://lint-//lint-//lint+libh(stdafx.h)#include"stdafx.h"#include<stdio.h>void{printf("oworld\n"}PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985---- IncludingfileC:\Program ---GlobalWrap-error900:(Note--Successfulcompletion,0messagesToolreturnedcode:+libh(stdafx.h-//lint-//lintlibh(stdafx.h)//stdafx.h//lint-wlib(0)//stdafx.h中雖然有錯(cuò)誤,但是作為庫(kù)文件處理,而對(duì)于庫(kù)文件又不報(bào)錯(cuò),所#include"stdafx.h"#includevoid{printf( oworld\n"}LINT對(duì)象模PleaseNote.LintObjectModulesareusedsolelytoimprovethespeedofprocessingpreviouslylintedmodulesandthespeedimprovementsareonlynoticeablewithverylargefiles.Theydonotofferanyadditionalerrorchecking.InfactsomeerrorcheckingislostastheLintObjectModulesdonotretainalltheinformationpresentintheoriginalsourcecode.強(qiáng)類#includetypedefintCount;typedefintBool;void{Countn;Boolstop;n=stop;//mistakebutno}ThisprogrammerbotchgoesundetectedbythecompilerbecausethecompilerisempoweredbytheANSIstandardtocheckonlyunderlyingtypes,which,inthiscase,areboththesame//lint-strong(A,Count,Bool)#include"stdafx.h"typedefintCount;typedefintBool;void{CountBooln=stop}PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985---- n=stop;//mistakebutnoD:\PC-Lint\MyTest\Test1\Test1.cpp(12):error632:(Warning--Assignmenttostrongtype'Count'incontext:assignment)D:\PC-Lint\MyTest\Test1\Test1.cpp(12):error530:(Warning--Symbol'stop'(line10)not}---GlobalWrap-error900:(Note--Successfulcompletion,3messagesToolreturnedcode:-strong(A)--strong(A)-b–對(duì)每個(gè)布爾操作符(== ||)都會(huì)進(jìn)行強(qiáng)類型檢查,看//lint-strong(Ab,Bool)#include"stdafx.h"typedefintBool;Boolgt(inta,intb){if(a)returna>b;//OKelsereturn0;//}PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985----Module: elsereturn0;//WarningD:\PC-Lint\MyTest\Test1\Test1.cpp(8):error632:(Warning--Assignmenttostrongtype'Bool'incontext:return)---GlobalWrap-error900:(Note--Successfulcompletion,1messagesToolreturnedcode://lint-strong(Ab,Bool)#include"stdafx.h"typedefintBoolgt(inta,int{}

returna>b;//OKreturn(Bool)0;//lint-strong(B,Bool)#include"stdafx.h"typedefintBool;Boolgt(inta,intb){}

returna>b;//OKreturn0;//PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985----Module: D:\PC-Lint\MyTest\Test1\Test1.cpp(7):error640:(Warning--Expectedstrongtype'Bool'inBooleancontext)---GlobalWrap-error900:(Note--Successfulcompletion,1messagesToolreturnedcode://lint-strong(AJXb,Bool//lint-strong(AJX,BitField)#include"stdafx.h"typedefinttypedefunsignedBitField;structfoo{}

unsigneda:1,b:2;BitFieldc:1,d:2,e:3;void{x.a=(Bool)1;//x.b=(Bool)0;//strongtypex.a=0;//strongtypex.b=2;//x.c=x.a;//x.e=1;//strongtypex.e=x.d;//}PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985---- x.b=(Bool)0;//strongtypeD:\PC-Lint\MyTest\Test1\Test1.cpp(16):error633:(Warning--Assignmentfromastrongtype'Bool'incontext:assignment)x.a=0;//strongtypeD:\PC-Lint\MyTest\Test1\Test1.cpp(17):error632:(Warning--Assignmenttostrongtype'Bool'incontext:assignment)x.e=1;//strongtypeD:\PC-Lint\MyTest\Test1\Test1.cpp(20):error632:(Warning--Assignmenttostrongtype'BitField'incontext:assignment)---GlobalWrap-error900:(Note--Successfulcompletion,3messagesproduced)Toolreturnedcode:3Intheabove,membersaandcarestronglytypedBool,membersdandearetypedBitFieldandmemberbisnotstronglytyped.TosuppresstheBooleanassumptionforone-bitbitfieldsusetheflag'f'inthe-strongoptionfortheBoolean.Intheexampleabove,thiswouldbe-strong(AJXbf,Bool).當(dāng)強(qiáng)類型的值被賦予一個(gè)不同類型的變量時(shí)((assignmentoperatorreturnvaluef:1被當(dāng)成是布爾類8.4-index(flags,ixtype,sitype[,sitype]...callowConstantsaswellasixtype,tobeusedasdallowarrayDimensionstobespecifiedwithoutusingan//lint-strong(AzJX,Count,Temperature//lint-index(d,Count,Temperature//OnlyCountcanindexaTemperature#include"stdafx.h"typedeffloatTemperature;typedefintCount;Temperaturet[100];//OKbecauseofdflagTemperature*pt=t;//pointersarealsocheckedvoid{Countt[0]=t[1];//Warnings,nocflagfor(i=0;i<100;i++)t[i]=0.0;//OK,iisaCountpt[1]=2.0;//Warningi=pt-t;//OK,pt-tisa}PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985----Module:D:\PC-Lint\MyTest\Test1\Test1.cppt[0]=t[1];//Warnings,nocflagD:\PC-Lint\MyTest\Test1\Test1.cpp(14):error637:(Warning--Expectedindextype'Count'forstrongtype'Temperature')D:\PC-Lint\MyTest\Test1\Test1.cpp(14):error637:(Warning--Expectedindextype'Count'forstrongtype'Temperature')for(i=0;i<100;i++D:\PC-Lint\MyTest\Test1\Test1.cpp(15):error638:(Warning--Strongtypemismatchfortype'Count'inrelational)t[i]=0.0;//OK,iisaD:\PC-Lint\MyTest\Test1\Test1.cpp(16):error632:(Warning--Assignmenttostrongtype'Temper

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論