Delphi编译指令了解学习
以下内容来源于网络,整理在一块儿方便以后回顾查看。
Delphi 的编译指令(1) DEFINE、DEFINE、DEFINE、UNDEF、IFDEF、IFDEF、IFDEF、ELSE、$ENDIF
一个程序从无到有的过程是这样的: 编辑代码 -> 预处理 -> 编译(成dcu等) -> 链接(为exe等).
什么是预处理?
譬如 VCL 中有很多代码是兼容 Linux 的, 在 Windows 下就需要在编译之前预处理掉那些 for Linux 的代码.
1、判断操作系统:
其中的 “MSWINDOWS” 和 “LINUX” 就是 Delphi 预定义的 “条件标识符”.
begin{$IFDEF MSWINDOWS}ShowMessage('Windows');{$ENDIF}{$IFDEF LINUX}ShowMessage('Linux');{$ENDIF}
end;
2、自定义条件标识符(DEFINE):
下面例子中自定义了条件标识符: WanYi; 标识符和定义它的指令都不区分大小写, 但大家一般惯用大写.
begin{$DEFINE WANYI}{$IFDEF WanYi}ShowMessage('标识符 WanYi 已定义');{$ELSE}ShowMessage('标识符 WanYi 未定义');{$ENDIF}
end;
3、取消条件标识符的定义(UNDEF):
begin{$DEFINE WANYI}{$IFDEF WANYI} ShowMessage('确认标识符 WanYi 是否定义');{$ENDIF}{$UNDEF WANYI}{$IFDEF WANYI} ShowMessage('再次确认标识符 WanYi 是否定义');{$ENDIF}
end;
4、取消定义的简单办法:
在 {$…} 的 $ 前面随便加点什么, 让它变成 “注释”, 譬如: {.$}
begin{.$DEFINE WANYI}{$IFDEF WANYI} ShowMessage('确认标识符 WanYi 是否定义');{$ENDIF}{.$UNDEF WANYI}{$IFDEF WANYI} ShowMessage('再次确认标识符 WanYi 是否定义');{$ENDIF}
end;
5、调试编译指令时特别要注意的:
Delphi 有个常识: 如果单元代码没有改变, 相应的 dcu 不会重新生成!
因此, 为了有准确的调试结果, 执行前先用 Shift+F9 强制编译当前工程, 然后再 Run;
强制编译所有相关单元也可以, 方法: Project -> Build all project.
当然修改下代码也很方便, 譬如在代码中打个空格再退回来.
6、测试预定义的 Debug 和 Release:
当我们当新建一个工程, Delphi 默认的是调试(Debug)状态, 当我们发布软件时应该切换到发布(Release)状态.
两种状态下编译指令是有区别的, 在 Release 状态下发布的 dcu 或 exe 会更小、更优化.
Debug 和 Release 的切换方法:
进入 Project Manager -> Build Configurations, 在 Debug 或 Release 上双击, 或从右键 Activate.
下面的代码可以检测到这种改变, 不过要注意上面提到的 Shift+F9 或 Project -> Build all
project.
begin{$IFDEF DEBUG}ShowMessage('调试模式');{$ENDIF}{$IFDEF RELEASE}ShowMessage('发布模式');{$ENDIF}
end;
7、编译指令写在哪?:
编译指令可以写在代码页的任何地方, 不过在代码的不同区域有时也会不同;
譬如: {KaTeX parse error: Expected 'EOF', got '}' at position 12: APPTYPE GUI}̲ 和 {APPTYPE CONSOLE} 就只能写在工程文件里才有效.
{KaTeX parse error: Expected 'EOF', got '}' at position 12: APPTYPE GUI}̲ 和 {APPTYPE CONSOLE} 分别表示窗口工程和控制台工程.
其中 {$APPTYPE GUI} 是默认的, 所以很少见到它.
它甚至可以嵌入到代码行当中, 譬如 ActnColorMaps 单元就有这么一句:
begin
SystemParametersInfo(SPI_GETFLATMENU, 0, {KaTeX parse error: Expected 'EOF', got '}' at position 11: IFNDEF CLR}̲@{ENDIF}FlatMenus, 0);
end;
8、条件标识符的有效范围:
Delphi 预定义的条件标识符都是全局的, 我们用 {$DEFINE …} 自定义的标识符都是局部的.
如何自定义全局的标识符呢?
Project -> Options… -> 选定 Delphi Compiler -> 点击 Conditional defines 右边小按钮 -> 添加.
不过这和系统预定义的还是有区别, 咱们自定义的只能用于当前文件.
如何定义每个文件都可以使用的标识符呢?
从 Project -> Options… 定义后, 马上选择左下角的 Default.
这和系统预定义的还是有区别, 因为这只能左右以后的文件, 管不着以前存在的文件.
如何…没办法了.
其他编译指令, 譬如在 Debug 或 Release 中的设置也都是这样; 也就是说: 每个文件都有相对独立的编译设置.
看到 Project -> Options… 马上明白了编译指令的设置方法有两种:
1、使用 {$…} 在代码中嵌入;
2、从 Project -> Options… 设置.
但在代码中嵌入有时是不可替代的, 譬如现在讨论的条件编译.
9、编译指令有多少?:
现在谈到的还只是条件编译, 实际应用最多的是开关编译; 在任一代码页执行快捷键 Ctrl+O+O , 然后看看最上面…
下面列出了这些默认设置:
{$A8,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N-,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y+,Z1}
{$MINSTACKSIZE $00004000}
{$MAXSTACKSIZE $00100000}
{$IMAGEBASE $00400000}
{$APPTYPE GUI}
{$WARN SYMBOL_DEPRECATED ON}
{$WARN SYMBOL_LIBRARY ON}
{$WARN SYMBOL_PLATFORM ON}
{$WARN SYMBOL_EXPERIMENTAL ON}
{$WARN UNIT_LIBRARY ON}
{$WARN UNIT_PLATFORM ON}
{$WARN UNIT_DEPRECATED ON}
{$WARN UNIT_EXPERIMENTAL ON}
{$WARN HRESULT_COMPAT ON}
{$WARN HIDING_MEMBER ON}
{$WARN HIDDEN_VIRTUAL ON}
{$WARN GARBAGE ON}
{$WARN BOUNDS_ERROR ON}
{$WARN ZERO_NIL_COMPAT ON}
{$WARN STRING_CONST_TRUNCED ON}
{$WARN FOR_LOOP_VAR_VARPAR ON}
{$WARN TYPED_CONST_VARPAR ON}
{$WARN ASG_TO_TYPED_CONST ON}
{$WARN CASE_LABEL_RANGE ON}
{$WARN FOR_VARIABLE ON}
{$WARN CONSTRUCTING_ABSTRACT ON}
{$WARN COMPARISON_FALSE ON}
{$WARN COMPARISON_TRUE ON}
{$WARN COMPARING_SIGNED_UNSIGNED ON}
{$WARN COMBINING_SIGNED_UNSIGNED ON}
{$WARN UNSUPPORTED_CONSTRUCT ON}
{$WARN FILE_OPEN ON}
{$WARN FILE_OPEN_UNITSRC ON}
{$WARN BAD_GLOBAL_SYMBOL ON}
{$WARN DUPLICATE_CTOR_DTOR ON}
{$WARN INVALID_DIRECTIVE ON}
{$WARN PACKAGE_NO_LINK ON}
{$WARN PACKAGED_THREADVAR ON}
{$WARN IMPLICIT_IMPORT ON}
{$WARN HPPEMIT_IGNORED ON}
{$WARN NO_RETVAL ON}
{$WARN USE_BEFORE_DEF ON}
{$WARN FOR_LOOP_VAR_UNDEF ON}
{$WARN UNIT_NAME_MISMATCH ON}
{$WARN NO_CFG_FILE_FOUND ON}
{$WARN IMPLICIT_VARIANTS ON}
{$WARN UNICODE_TO_LOCALE ON}
{$WARN LOCALE_TO_UNICODE ON}
{$WARN IMAGEBASE_MULTIPLE ON}
{$WARN SUSPICIOUS_TYPECAST ON}
{$WARN PRIVATE_PROPACCESSOR ON}
{$WARN UNSAFE_TYPE OFF}
{$WARN UNSAFE_CODE OFF}
{$WARN UNSAFE_CAST OFF}
{$WARN OPTION_TRUNCATED ON}
{$WARN WIDECHAR_REDUCED ON}
{$WARN DUPLICATES_IGNORED ON}
{$WARN UNIT_INIT_SEQ ON}
{$WARN LOCAL_PINVOKE ON}
{$WARN MESSAGE_DIRECTIVE ON}
{$WARN TYPEINFO_IMPLICITLY_ADDED ON}
{$WARN RLINK_WARNING ON}
{$WARN IMPLICIT_STRING_CAST ON}
{$WARN IMPLICIT_STRING_CAST_LOSS ON}
{$WARN EXPLICIT_STRING_CAST OFF}
{$WARN EXPLICIT_STRING_CAST_LOSS OFF}
{$WARN CVT_WCHAR_TO_ACHAR OFF}
{$WARN CVT_NARROWING_STRING_LOST OFF}
{$WARN CVT_ACHAR_TO_WCHAR OFF}
{$WARN CVT_WIDENING_STRING_LOST OFF}
{$WARN XML_WHITESPACE_NOT_ALLOWED ON}
{$WARN XML_UNKNOWN_ENTITY ON}
{$WARN XML_INVALID_NAME_START ON}
{$WARN XML_INVALID_NAME ON}
{$WARN XML_EXPECTED_CHARACTER ON}
{$WARN XML_CREF_NO_RESOLVE ON}
{$WARN XML_NO_PARM ON}
{$WARN XML_NO_MATCHING_PARM ON}
Delphi 的编译指令(2) 条件语句的更多用法
$IFDEF 等同于 $IF DEFINED(…) :
它们的结束分别是: ENDIF、ENDIF、ENDIF、IFEND; 例子中的 VER200 是 Delphi 2009 的标识.begin
{KaTeX parse error: Expected 'EOF', got '}' at position 13: IFDEF VER200}̲ ShowMessa…ENDIF}{KaTeX parse error: Expected 'EOF', got '}' at position 19: …DEFINED(VER200)}̲ ShowMessa…IFEND}
end;$IFNDEF 等同于 $IF NOT DEFINED(…) :
它们的结束分别是: ENDIF、ENDIF、ENDIF、IFEND; 例子中的 VER150 是 Delphi 7 的标识.begin
{KaTeX parse error: Expected 'EOF', got '}' at position 14: IFNDEF VER150}̲ ShowMessa…ENDIF}{KaTeX parse error: Expected 'EOF', got '}' at position 23: …DEFINED(VER150)}̲ ShowMessa…IFEND}
end;可以使用 or 和 and:
begin
{KaTeX parse error: Expected 'EOF', got '}' at position 11: DEFINE AAA}̲ {DEFINE BBB}{KaTeX parse error: Expected 'EOF', got '}' at position 32: …OR DEFINED(BBB)}̲ ShowMessa…IFEND}
{KaTeX parse error: Expected 'EOF', got '}' at position 33: …ND DEFINED(BBB)}̲ ShowMessa…IFEND}
end;可以使用 System 单元里的常量:
我测试了 System 单元里的很多常量都没问题.begin
ShowMessage(FloatToStr(CompilerVersion)); {在 Delphi 2009 中, CompilerVersion = 20.0}{KaTeX parse error: Expected 'EOF', got '}' at position 27: …Version >= 17.0}̲ ShowMessa…IFEND}
end;使用 $IFOPT 判断编译开关:
Delphi 挺好玩, 26个字母分别安排成不同的开关指令(用 Ctrl+o+o 查看, 当然开关指令不止这些);
$IFOPT 可以判断这些指令是否打开.
这个指令不是很常用, 我看了一下 2009 的 VCL 源码, 总共才用了 6 次.begin
{KaTeX parse error: Expected 'EOF', got '}' at position 9: IFOPT B+}̲ ShowMessa…ELSE}
ShowMessage(‘指令 B 已关闭’);
{$ENDIF}{KaTeX parse error: Expected 'EOF', got '}' at position 3: B+}̲ {IFOPT B+}
ShowMessage(‘Ok!’);
{$ENDIF}
end;
Delphi 的编译指令(3) 常用的预定义条件标识符
版本标识:
VER10 : Turbo Pascal 1
VER20 : Turbo Pascal 2
VER30 : Turbo Pascal 3
VER40 : Turbo Pascal 4
VER50 : Turbo Pascal 5
VER60 : Turbo Pascal 6
VER70 : Turbo Pascal 7 / Borland Pascal 7
VER80 : Delphi 1
VER90 : Delphi 2
VER100 : Delphi 3
VER110 : ?
VER120 : Delphi 4
VER130 : Delphi 5
VER140 : Delphi 6
VER150 : Delphi 7
VER160 : Delphi 8
VER170 : Delphi 2005
VER180 : Delphi 2006
VER185 : Delphi 2007
VER190 : ?
VER200 : Delphi 2009其他:
MSWINDOWS
WIN32
LINUX
KYLIX
CLR
VSNETCONSOLEDEBUG
RELEASEPDEBUGSUNICODE
UNICODESTRING
Delphi 的编译指令(4) 编译指令全表
https://www.cnblogs.com/del/archive/2008/12/19/1358274.html指令及默认值 可选值 范围 注释 举例
{$A8}
{$ALIGN8} {$A+},{$A-},
{$A1},{$A2},{$A4},{$A8};
{$ALIGN ON},{$ALIGN OFF},
{$ALIGN 1},{$ALIGN 2},
{$ALIGN 4},{$ALIGN 8} Local
{$APPTYPE GUI} {$APPTYPE GUI},
{$APPTYPE CONSOLE} Global
{$B-}
{$BOOLEVAL OFF} {$B+},{$B-};
{$BOOLEVAL ON},
{$BOOLEVAL OFF} Local
{$C+}
{$ASSERTIONS ON} {$C+},{$C-};
{$ASSERTIONS ON},
{$ASSERTIONS OFF} Local
{$D+}
{$DEBUGINFO ON} {$D+},{$D-}
{$DEBUGINFO ON},
{$DEBUGINFO OFF} Global
{$DENYPACKAGEUNIT OFF} {$DENYPACKAGEUNIT ON}, Local
{$DESCRIPTION 'text'} Global
{$DESIGNONLY OFF} {$DESIGNONLY ON},
{$DESIGNONLY OFF} Local
{$E-} {$E+},{$E-}
{$E extension}
{$EXTENSION extension}
{$EXTERNALSYM identifier}
{$F-} {$F+},{$F-}
{$FINITEFLOAT ON} {$FINITEFLOAT ON},
{$FINITEFLOAT OFF} Global
{$G+}
{$IMPORTEDDATA ON} {$G+},{$G-};
{$IMPORTEDDATA ON},
{$IMPORTEDDATA OFF} Local
{$H+}
{$LONGSTRINGS ON} {$H+},{$H-}
{$LONGSTRINGS ON},
{$LONGSTRINGS OFF} Local
{$HINTS ON} {$HINTS ON},
{$HINTS OFF} Local
{$HPPEMIT 'string'}
{$I filename}
{$INCLUDE filename} Local
{$I+}
{$IOCHECKS ON} {$I+},{$I-};
{$IOCHECKS ON},
{$IOCHECKS OFF} Local
{$IMAGEBASE $00400000} {$IMAGEBASE number} Global
{$IMPLICITBUILD ON},{$IMPLICITBUILD OFF} {$IMPLICITBUILD ON} Global
{$J-}
{$WRITEABLECONST OFF} {$J+},{$J-}
{$WRITEABLECONST ON},
{$WRITEABLECONST OFF} Local
{$K-} {$K+},{$K-}
{$L+}
{$LOCALSYMBOLS ON} {$L+},{$L-}
{$LOCALSYMBOLS ON},
{$LOCALSYMBOLS OFF} Global
{$L filename}
{$LINK filename} Local
$LIBPREFIX 'lib' or $SOPREFIX 'bpl'
$LIBSUFFIX ' '
$LIBVERSION ' ' $LIBPREFIX 'string'
$LIBSUFFIX 'string'
$LIBVERSION 'string' Global
{$M-}
{$TYPEINFO OFF} {$M+},{$M-}
{$TYPEINFO ON},
{$TYPEINFO OFF} Local
{$M 16384,1048576} {$M minstacksize,maxstacksize};
{$MINSTACKSIZE number}
{$MAXSTACKSIZE number}
{$M 1048576} {$M reservedbytes}
{$RESOURCERESERVE reservedbytes} Global Linux
{$MESSAGE HINT|WARN|ERROR|FATAL 'text string'} Local
{$METHODINFO OFF} {$METHODINFO ON},
{$METHODINFO OFF}
{$N+} {$N+},{$N-}
{$NODEFINE identifier}
{$NOINCLUDE filename}
{$O+}
{$OPTIMIZATION ON} {$O+},{$O-};
{$OPTIMIZATION ON},
{$OPTIMIZATION OFF} Local
{$ObjExportAll Off} {$ObjExportAll On},
{$ObjExportAll Off} Global
{$P+}
{$OPENSTRINGS ON} {$P+},{$P-}
{$OPENSTRINGS ON},
{$OPENSTRINGS OFF} Local
{$POINTERMATH OFF} {$POINTERMATH ON},
{$POINTERMATH OFF} Local
{$Q-}
{$OVERFLOWCHECKS OFF} {$Q+},{$Q-}
{$OVERFLOWCHECKS ON},
{$OVERFLOWCHECKS OFF} Local
{$R filename}
{$RESOURCE filename}
{$R *.xxx}
{$R filename.res filename.rc}
{$R-}
{$RANGECHECKS OFF} {$R+},{$R-}
{$RANGECHECKS ON},
{$RANGECHECKS OFF} Local
{$REALCOMPATIBILITY OFF} {$REALCOMPATIBILITY ON},
{$REALCOMPATIBILITY OFF} Local
{$RUNONLY OFF} {$RUNONLY ON},
{$RUNONLY OFF} Local
{$S-} {$S+},{$S-}
{$SetPEFlags <integer expression>}
{$SetPEOptFlags <integer expression>} Local
{$T-}
{$TYPEDADDRESS OFF} {$T+},{$T-}
{$TYPEDADDRESS ON},
{$TYPEDADDRESS OFF} Global
{$U-}
{$SAFEDIVIDE OFF} {$U+},{$U-}
{$SAFEDIVIDE ON},
{$SAFEDIVIDE OFF} Local
{$V+}
{$VARSTRINGCHECKS ON} {$V+},{$V-}
{$VARSTRINGCHECKS ON},
{$VARSTRINGCHECKS OFF} Local
{$W-}
{$STACKFRAMES OFF} {$W+},{$W-}
{$STACKFRAMES ON},
{$STACKFRAMES OFF} Local
{$WARN ON} {$WARN identifier ON},
{$WARN identifier OFF} Local
{$WARNINGS ON} {$WARNINGS ON},
{$WARNINGS OFF} Local
{$WEAKPACKAGEUNIT OFF} {$WEAKPACKAGEUNIT ON},
{$WEAKPACKAGEUNIT OFF} Local
{$X+}
{$EXTENDEDSYNTAX ON} {$X+},{$X-};
{$EXTENDEDSYNTAX ON},
{$EXTENDEDSYNTAX OFF} Global
{$YD}
{$DEFINITIONINFO ON} {$Y+},{$Y-},{$YD};
{$REFERENCEINFO ON},
{$REFERENCEINFO OFF};
{DEFINITIONINFO ON},
{DEFINITIONINFO OFF} Global
{$Z1}
{$MINENUMSIZE 1} {$Z1},{$Z2},{$Z4};
{$MINENUMSIZE 1},
{$MINENUMSIZE 2},
{$MINENUMSIZE 4} Local
$DEFINE
$UNDEF$IFDEF
$ELSE
$ENDIF{$IF DEFINED(...)}
{$IFEND}{$IF NOT DEFINED(...)}
{$IFEND}{$IF DEFINED(...) OR DEFINED(...)}
{$IFEND}{$IF DEFINED(...) AND DEFINED(...)}
{$IFEND}{$IF System.Const >= Number}
{$IFEND}{$IFOPT ...}
{$ELSE}
{$ENDIF} {$region 'text'} ... {$endregion} Delphi 2009、2010 减小文件尺寸的方法:
//在 dpr 文件中加入:
{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
命令行编译命令
Borland Delphi Version 14.0
Copyright (c) 1983,2002 Borland Software CorporationSyntax: dcc32 [options] filename [options]-A<unit>=<alias> = Set unit alias -LU<package> = Use package -B = Build all units -M = Make modified units -CC = Console target -N<path> = DCU output directory -CG = GUI target -O<paths> = Object directories -D<syms> = Define conditionals -P = look for 8.3 file names also-E<path> = EXE output directory -Q = Quiet compile -F<offset> = Find error -R<paths> = Resource directories -GD = Detailed map file -U<paths> = Unit directories -GP = Map file with publics -V = Debug information in EXE -GS = Map file with segments -VR = Generate remote debug (RSM)-H = Output hint messages -W = Output warning messages -I<paths> = Include directories -Z = Output 'never build' DCPs -J = Generate .obj file -$<dir> = Compiler directive -JP = Generate C++ .obj file --help = Show this help screen -K<addr> = Set image base addr --version = Show name and version
Compiler switches: -$<letter><state> (defaults are shown below)A8 Aligned record fields P+ Open string params B- Full boolean Evaluation Q- Integer overflow checking C+ Evaluate assertions at runtime R- Range checking D+ Debug information T- Typed @ operator G+ Use imported data references U- Pentium(tm)-safe divide H+ Use long strings by default V+ Strict var-strings I+ I/O checking W- Generate stack frames J- Writeable structured consts X+ Extended syntax L+ Local debug symbols Y+ Symbol reference info M- Runtime type info Z1 Minimum size of enum types O+ Optimization
使用 {$ INCLUDE} 或 {$I} 指令管理和调用自定义函数**
这是一个简单、方便而又实用的小技巧. 譬如这段代码中有四个定义函数: MyAdd、MyDec、MyMul、MyDiv
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs;typeTForm1 = class(TForm)procedure FormCreate(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}//譬如下面四个自定义函数 *****************************
function MyAdd(const a,b: Integer): Integer;
beginResult := a + b;
end;function MyDec(const a,b: Integer): Integer;
beginResult := a - b;
end;function MyMul(const a,b: Integer): Integer;
beginResult := a * b;
end;function MyDiv(const a,b: Integer): Integer;
beginResult := a div b;
end;
//****************************************************//调用测试
procedure TForm1.FormCreate(Sender: TObject);
constx = 8;y = 2;
beginShowMessageFmt('%d,%d,%d,%d',[MyAdd(x,y), MyDec(x,y), MyMul(x,y), MyDiv(x,y)]);{显示结果: 10,6,16,4}
end;end.
我们可以把其中的自定义函数(也可以是其他代码)剪切保存在一个文本文件中(譬如是: C:\DelphiFun\MyFun.inc);
然后在原来代码的位置用 {KaTeX parse error: Expected 'EOF', got '\DelphiFun' at position 11: INCLUDE C:\̲D̲e̲l̲p̲h̲i̲F̲u̲n̲\MyFun.inc} 或 {I C:\DelphiFun\MyFun.inc} 再引入即可(可以使用相对路径).
下面是使用后的代码:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs;typeTForm1 = class(TForm)procedure FormCreate(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}{$I C:\DelphiFun\MyFun.inc}//调用测试
procedure TForm1.FormCreate(Sender: TObject);
constx = 8;y = 2;
beginShowMessageFmt('%d,%d,%d,%d',[MyAdd(x,y), MyDec(x,y), MyMul(x,y), MyDiv(x,y)]);{显示结果: 10,6,16,4}
end;end.
另外: 引入 C 语言的 obj 文件是用 {$L 路径} 指令完成的.
Delphi编译指令了解学习相关推荐
- Delphi 编译指令与说明
一个程序从无到有的过程是这样的: 编辑代码 -> 预处理 -> 编译(成dcu等) -> 链接(为exe等). 一.什么是预处理? 譬如 VCL 中有很多代码是兼容 Linux 的, ...
- Delphi编译指令说明
Delphi快速高小的编译器主要来自Object PASCAL的严谨,使用Delphi随时都在与编译器交流,大部分情况下不需要干涉编译器的运行,但是有时也需要对编译器进行必要的设置. ******** ...
- Delphi编译指令详解-收集②
{$IFDEF WIN32} -- 這可不是註解喔! 對於Delphi來說﹐左右大括號之間的內容是註解﹐然而「{$」 (左括號後緊接著貨幣符號)對於Compiler(編譯器)而言並不是註解﹐ 而是寫給 ...
- DELPHI的编译指令
DELPHI的编译指令 可以检测到这种改变, (1) Shift+F9 或 Project -> Build all project. ...
- Delphi 的编译指令(1): $DEFINE、$UNDEF、$IFDEF、$ELSE、$ENDI
2019独角兽企业重金招聘Python工程师标准>>> 一个程序从无到有的过程是这样的: 编辑代码 -> 预处理 -> 编译(成dcu等) -> 链接(为exe等) ...
- Delphi 简单的编译指令
RAD Studio 10.2.3 测试√ uCompile_ZhiLing.pas // 编译指令 unit uCompile_ZhiLing;interfaceusesSystem.SysUtil ...
- c语言if多条件并列_C/C++编程笔记:C语言预编译指令—条件编译,零基础推荐收藏
一. 内容概述 本文主要介绍c语言中条件编译相关的预编译指令,包括#define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. 二.条件编 ...
- 教程-Delphi编译就报毒
这几天都在忙专周实验,今天用到delphi,一到编译时nod32就报毒,编译空文件也报毒,上网查了资料才明白,是编译文件被感染了,生成软件就会报毒.把自己找到的资料分享如下: 重新编译时,生成的exe ...
- FPGA之道(36)Verilog中的编译指令
文章目录 前言 Verilog中的编译指令 define指令 timescale指令 inlcude指令 前言 本文摘自<FPGA之道>,一起来了解下Verilog中的编译指令. Veri ...
最新文章
- ueditor 1.4.3 JSP 配置
- Python3 列表的基本操作
- 设置DateChooser控件的头部文字对齐方式.
- 读《我们应当怎样做需求分析》后
- Accumulator
- mysql按域排序_如何在MySQL中对域名进行排序?
- 一个站点存在多个web.config时如何管理?
- 感觉小轿车要比SUV舒服,为什么很多人还是选择了SUV?
- SqlServer中decimal(numeric )、float 和 real 数据类型的区别[转]
- Swing 100行画图示例
- c++之友元函数和友元类
- java计算集合交差并集
- 实验3:搜索算法求解8数码问题
- 如何在mysql验证非负数_MySQL数据库- 要求非负数
- 有机酸膜分离之柠檬酸生产应用反渗透技术
- hub75点屏(32扫)
- 说说jvm什么时候会回收垃圾
- 多媒体-用windows自带录音机录音(转载)
- Laragon 添加MongoDB服务
- 实验二 实现中点分割直线段裁剪算法
热门文章
- 对VC++一些常见问题的整理
- java容器分数0-9_2018.4.27 java容器
- 随想录(机器学习的生产应用)
- python模块的使用方法_python中requests模块的使用方法
- java1.8win7_JDK 1.8 安装配置教程(win7 64bit )
- speech开源框架_微软SAPI(The Microsoft Speech API):让你的软件能说会道
- mysql 5.7 安装_MySQL 5.7 的安装历程
- 安卓设置菊花动画_华为手机必须调整的4个默认设置,让手机流畅到飞起,用到2035年...
- Upload LABS Pass-8
- Oracle备份与还原(exp和imp),导出导入