❶ 編譯開關{$IFDEF VCL}、{$IFNDEF DELPHI7} 中的vcl和delphi7在那裡定義的啊!!
編譯開關的定義可以在pas文件中用{$DEFINE VCL},
也可以在工程選項,Directories/Conditionals->Conditionals中添加.
❷ 有沒有delphi編譯開關的資料
有一個三件本的材料,石油工業出版社的,borland的中文delphi手冊,個中講object pascal那本的最後有具體的解釋。 查看更多答案>>
❸ 請問noip 的「編譯命令(不包含任何優化開關)」是什麼意思,望解答
意思就是
Pascal:fpc %s.pas
G++:g++ %s.cpp -o %s.exe
GCC:gcc %s.c -o %s.exe
無視Pascal文件里的開關
有的人編譯時喜歡開-o -o2 -o3,速度快點,但是noip不允許這個
而且-o2可以影響程序行為
❹ Pascal編譯開關。語法及作用。
網上查找保存的資料。供參考:
1)數據對齊(AlignData)
{$A+}或{$A-}
在{$A+}狀態下,將非字元按偶地址對齊存放,可以提高8086和80286存取數據的速度。不影響位元組變數、記錄域結構和數組元素。在{$A-}狀態下,將使用位元組對齊方式,數據可存放在奇地址或偶地址。
2)布爾運算(BooleanEvaluation)
{$B+}或{$B-}
在{$B+}狀態下,編譯器產生完全布爾表達式運算代碼。布爾表達式中的每個操作都確保被計算。既是整個表達式的結果以確定,還繼續運算其餘的表達式。
在{$B-}狀態下,編譯器產生短路布爾表達式運算代碼。接著從左到右運算,當整個表達式結果確定後,就停止運算。
3)調試信息(DebugInformation)
{$D+}或{$D-}
{$D+}產生調試信息,它在編譯程序或單元產生運行錯誤時,能自動定位引起錯誤的語句。
4)浮點模擬(Emulation)
{$E+}或{$E-}
{$E+}只是在8087協處理器不存在時,將連接運行庫以便對協處理器進行模擬。
{$N+,$E+}狀態編譯程序,系統將同8087模擬器連接,得到exe文件,不管有無8087,都可以在機器上進行IEEE標准754的二進制浮點運算。
{$N+,$E-}狀態下,只能在有8087時,才能進行IEEE標准754的二進制浮點運算。
8087模擬開關如果用在一個單元是無效的,它只能用於程序的編譯。
5)輸入輸出檢查(Input/OutputChecking)
{$I+}或{$I-}
$I指示控制是否自動產生對調用過程的結果進行檢查。
6)數字處理(NumbericProcessing)
{$N+}或{$N-}
{$N-}狀態,在機器上只能進行實數類型運算。在{$N+}狀態,在有8087協處理器或沒有用{$E+}指示對8087進行模擬,都可以對IEEE浮點類型進行運算。
7)范圍檢查(RangeChecking)
{$R+}或{$R-}
$R+進行邊界和范圍檢查
8)棧溢出檢查(StackOverflowChecking)
{$S+}或{$S-}
在{$S+}狀態下編譯,程序在每個過程或函數的開始生成一段代碼,用於檢查是否有足夠的棧空間供局部變數使用。若棧空間不夠,程序停止運行,並顯示運行錯誤。
在{$S+}狀態下這樣調用會導致系統崩潰。
9)變數串檢查(VarStringChecking)
{$V+}或{$V-}
在{$V+}狀態下,實行嚴格的類型檢查,要求形參、實參具有同一字元串類型。
在{$V+}狀態下,允許任意類型的字元串變數作為實參,甚至是一實參的最大長度不同於形參長度。
//以上內容照抄自網路,下面是原創的
10)復制文件中的內容(IncludeFile)
{$I}
格式:{$Iabc.inc}
作用就相當於abc.inc中所有的東西抄到這個位置。
12)隱藏控制台(GUIapplication)
{$APPTYPEGUI}
就是這樣,在程序的開頭加上,可以隱藏控制台。
13)擴大棧容量
{$M100000000,0,MaxLongint}
在使用上面的指令後,可以使用AnsiString類型。
{$M$4000,0,0}
在使用上面的命令後,再使用DOS單元。否則可能出現錯誤。
14)定義符號(Defineasymbol)
格式:{$define標示符}
對下面這些指令有用:
15)如果定義XXX,那麼……(ifdefineXXX...)
格式:{$ifdef符號標示符}
語句;
{$endif}
如果用$define定義了,那麼就會執行下面到$endif的語句。
16)ifdef的另一種用法(else...)
格式:{$ifdef符號標示符}
語句1;
{$else}
語句2;
{$endif}
若果定義了XXX就執行語句1,否則執行語句2。
17)取消定義
格式:{$undef標示符}
取消定義某個標示符,和$define搭配使用。
//以上是我自己研究或者總結的,下面是幫助文件原文:
Localcompilerswitches
cmdshortlongexplanation
$A$ALIGNAlignData.
A$ASMMODESelectassemblermode.
$B$.
Sa$C$.
$
d$DEFINEDefineasymbol.
$.
$.
$ERRORGenerateerrormessage.
$FUsefarornearfunctions.
$.
Sg$GOTOSupportGotoandLabel.
$H$LONGSTRINGSUseAnsiStrings.
$HINTGeneratehintmessage.
vh$HINTSEmithints
$IFStartconditionalcompilation.
$.
$.
$.
$INFOGenerateinfomessage.
Si$INLINEEnableinlinecodesupport.
Ci$I$IOCHECKSIncludeInput/Outputchecking.
$I$INCLUDEIncludele.
$I$INCLUDEIncludecompilerinfo.
$L$LINKLinkobjectle.
$LINKLIBLinktoalibrary.
$M$TYPEINFOGenerateRun-Timetypeinformation.
Sm$MACROEnablemacrosupport.
$
$MESSAGEGenerateinfomessage.
$MMXEnableIntelMMXsupport.
$NOTEGeneratenotemessage.
vn$NOTESEmitnotes.
A$.
$P$OPENSTRINGSUseopenstrings.
$.
$.
Co$Q$OVERFLOWCHECKSUseover
owchecking.
Cr$R$RANGECHECKSUserangechecking.
$.
XX$SMARTLINKUsesmartlinking.
St$.
$STOPGeneratefatalerrormessage.
$T$.
u$UNDEFUndeneasymbol.
$V$VARSTRINGCHECKSUsestrictvar-stringchecking.
$WAITWaitforenterkeypress.
$WARNINGGeneratewarningmessage.
$WARNINGSEmitwarnings.
$X$
$APPIDSetapplicationID(PalmOS)
$APPNAMESetapplicationname(PalmOS)
$(Windowsonly)
g$D$.
$DESCRIPTIONNotsupported.
$EEnableemulationofcoprocessor.
$GGenerate80286code.
Fi$.
$L$.
Fl$.
$M$MEMORYSpecifymemorysizes.
M$.
$NEnablenumericprocessing.
$OEnableoverlaycodegeneration.
Fo$.
Ct$SUsestackchecking
Fu$.
$VERSIONSetDLLversion(Windows)
$W$.
b$Y$.
❺ acc和gcc編譯動態庫的區別
編譯動態庫時,acc使用-b開關,gcc使用-share開關,acc使用-AA開關編譯標准c++代碼,-mt加入多線程鏈接,gcc使用-pthread開關,acc使用+Markered開關編譯出cpp文件所需的頭文件,並以xxx.d文件形式存放,acc和gcc的共同的開關有-I加入頭文件目錄,-l開關加入依賴的動態庫鏈接,-L開關加入動態庫搜尋的路徑,-o開關輸出目標文件,-g開關加入調試信息,-w開關加入警告級別。在64位的機器上,acc使用+DD32開關編譯32位程序,gcc使用-milp32編譯32位程序,此外,在64位機器上,默認是編譯32位的程序。
❻ VS2008里,創建一個win32 static libraryd靜態庫後,怎麼添加一個 symbol 「TETLIBRARY」 到編譯開關
樓上大概意思都說了,不贅述。
要求中,如果只是添加一個預編譯標識符號,這個很簡單,看需要做什麼,這個和_DEBUG和_RELEASE的定義一個位置,你可以在項目設置裡面參考一下。
如果需要像_DEBUG這樣的用法,就要注意,每個編譯模式裡面是否需要不一樣(就像_DEBUG),這樣做程序代碼裡面做這樣的判定才可能有意義:
#ifdef TETLIBRARY
....
#else
....
#endif
❼ 如何編譯程序,每按下一個開關,從0顯示的到F
給五十分吧,我告訴你
❽ 用西門子PLC如何編譯行程開關的
和三菱歐姆龍,以及各大PLC品牌的一樣寫法。
❾ c++有沒有什麼編譯開關
沒有,數組越界是語言特性。
堆棧大小這些不屬於語言本身,但可以在編譯參數里設置,但對於搞競賽的沒用.
❿ 什麼是編譯開關 pascal
在編譯窗口中連按兩下「ctrl+o」可以在程序頭中出現所有編譯開關情況,也可以自己書寫。
下面是一些常見開關所代表的意思:
1)數據對齊(Align Data)
{$A+}或{$A-}
在{$A+}狀態下,將非字元按偶地址對齊存放,可以提高8086和80286存取數據的速度。不影響位元組變數、記錄域結構和數組元素。在{$A-}狀態下,將使用位元組對齊方式,數據可存放在奇地址或偶地址。
2)布爾運算(Boolean Evaluation)
{$B+}或{$B-}
在{$B+}狀態下,編譯器產生完全布爾表達式運算代碼。布爾表達式中的每個操作都確保被計算。既是整個表達式的結果以確定,還繼續運算其餘的表達式。
在{$B-}狀態下,編譯器產生短路布爾表達式運算代碼。接著從左到右運算,當整個表達式結果確定後,就停止運算。
3)調試信息(Debug Information)
{$D+}或{$D-}
{$D+}產生調試信息,它在編譯程序或單元產生運行錯誤時,能自動定位引起錯誤的語句。
4)浮點模擬(Emulation)
{$E+}或{$E-}
{$E+}只是在8087協處理器不存在時,將連接運行庫以便對協處理器進行模擬。
{$N+,$E+}狀態編譯程序,系統將同8087模擬器連接,得到exe文件,不管有無8087,都可以在機器上進行IEEE標准754的二進制浮點運算。
{$N+,$E-}狀態下,只能在有8087時,才能進行IEEE標准754的二進制浮點運算。
8087模擬開關如果用在一個單元是無效的,它只能用於程序的編譯。
5)輸入輸出檢查(Input/Output Checking)
{$I+}或{$I-}
$I指示控制是否自動產生對調用過程的結果進行檢查。
6)數字處理(Numberic Processing)
{$N+}或{$N-}
{$N-}狀態,在機器上只能進行實數類型運算。在{$N+}狀態,在有8087協處理器或沒有用{$E+}指示對8087進行模擬,都可以對IEEE浮點類型進行運算。
7)范圍檢查(Range Checking)
{$R+}或{$R-}
$R+進行邊界和范圍檢查
8)棧溢出檢查(Stack Overflow Checking)
{$S+}或{$S-}
在{$S+}狀態下編譯,程序在每個過程或函數的開始生成一段代碼,用於檢查是否有足夠的棧空間供局部變數使用。若棧空間不夠,程序停止運行,並顯示運行錯誤。
在{$S+}狀態下這樣調用會導致系統崩潰。
9)變數串檢查(Var String Checking)
{$V+}或{$V-}
在{$V+}狀態下,實行嚴格的類型檢查,要求形參、實參具有同一字元串類型。
在{$V+}狀態下,允許任意類型的字元串變數作為實參,甚至是一實參的最大長度不同於形參長度。
BP7下的最佳參數是:
{$A+,B-,D-,E-,F-,G+,I-,L-,N+,O-,P+,Q-,R-,S-,T-,V-,X+,Y-}
{$M 65520,0,655360}
其中D和L與調試有關,調試時必須打開這兩個參數
N+可以使程序能夠使用擴展實型。一般情況下,Real速度最慢,不應該使用。
在編輯環境下按Ctrl+O+O,可以自動列出默認的編譯指示,然後再自己改,這樣比較快
要想知道各個參數的意義,可以察看BP7的聯機幫助文檔