女人下身干燥无水是什么原因| 小狗呕吐是什么原因| 牛肚是什么部位| 吃什么生精养精最快| 40年属什么| 后背疼是什么原因| 西芹和芹菜有什么区别| 炸酱面用的什么酱| 葫芦是什么意思| 吃什么补津液| 明太鱼是什么鱼| 嘴角上扬是什么意思| 小学生的学籍号是什么| 什么感| 气虚什么症状| 中枢是什么意思| 衣服五行属什么| 妊娠期是指什么时候| 社保卡是干什么用的| 激凸是什么意思| 各类病原体dna测定是检查什么| 抗核抗体阴性说明什么| 419什么意思| 非球面镜片是什么意思| 一什么红枣| 黄河里有什么鱼| pass掉是什么意思| 女人梦见好多蛇是什么预兆| 天麻有什么作用| 食蚁兽是什么动物| 一什么铃铛| 便秘了吃什么容易排便| 一个田一个比念什么| black什么颜色| 卡替治疗是什么意思| 甲沟炎涂抹什么药膏最有效| 吃什么补维生素b6| 环形红斑是什么病| 牙周炎吃什么药最好| 爵迹小说为什么不写了| 默然是什么意思| 肾彩超能查出什么| 手上长小水泡很痒是什么原因| 产检挂什么科| 肿瘤标志物是什么意思| 必承其重上一句是什么| 眉毛变白是什么原因| 农历五月十九是什么日子| 老人嗜睡是什么征兆| 后脑勺发麻是什么原因| 墨镜偏光是什么意思| 阴道撕裂用什么药| 肾结石什么东西不能吃| 卧室放什么驱虫最好| 什么姓氏排第一| 娃娃流鼻血是什么原因| 什么是像素| 胃炎吃什么食物好养胃| 用黄瓜敷脸有什么功效| 小是什么生肖| 长得标致是什么意思| 顶胯是什么意思| 二十岁是什么之年| 沁人心扉什么意思| er是什么| 精彩是什么意思| 有过之而不及什么意思| 250为什么是骂人的话| 糟卤对身体有什么危害| 泡妞是什么意思啊| 西洋参有什么作用和功效| 喝茶对身体有什么好处| 交警大队长是什么级别| 消炎药有什么| 酉读什么| 菲拉格慕属于什么档次| 洗劫一空是什么意思| 低血压对身体有什么影响| 朝鲜钱币叫什么| 5月5日是什么星座| tct是什么检查| 什么是心肌炎| 汗蒸和桑拿有什么区别| 老人吃什么水果对身体好| 2016年属猴是什么命| 属马的跟什么属相最配| CA是什么激素| 母胎单身什么意思| 胸口疼是什么原因| 血糖高的人能吃什么水果| 最聪明的狗是什么狗| 生肖羊和什么生肖相冲| 梦到好多小蛇是什么意思| 叶酸买什么牌子的好| 桑叶泡水喝有什么好处| 二甲双胍什么时候吃最好| 中午适合吃什么| 出库是什么意思| 3月7日是什么星座| 头癣用什么药膏最好| 走路脚后跟疼是什么原因| 敏感肌是什么样的| 地主是什么生肖| 男人腰痛吃什么药| 广西有什么水果| 什么是皮肤病| 腹水是什么原因引起的| 爱叶有什么作用和功效| 中元节开什么生肖| 245是什么意思| 查微量元素挂什么科| 尘字五行属什么| 美纹纸是干什么用的| 肝脏在什么位置图片| 小三阳是什么意思| 热痱子用什么药| 看门神是什么生肖| 受持是什么意思| 老人嘴唇发紫是什么原因| 草泥马是什么| 沙棘是什么东西| 籽字五行属什么| 02年是什么生肖| 生蚝有什么功效与作用| 5月5日什么星座| 情绪上来像发疯一般是什么病| 桓是什么意思| 身体颤抖是什么病| 超纤皮是什么| 戾气太重是什么意思| 大什么什么手| 吃什么可以快速减肥| 口腔溃疡可以吃什么| c反应蛋白高说明什么| 什么鱼最好养不容易死| 唇炎属于什么科| 大学生当兵有什么好处| 送锦旗有什么讲究| 铁观音属于什么茶类| 黑色素缺失吃什么补充最快| 房速是什么意思| 1997年7月1日属什么生肖| 世界最大的岛是什么岛| 水乳是什么| chloe是什么意思| 婴儿坐高铁需要什么证件| 发扬什么精神| 时柱将星是什么意思| 刚怀孕有什么症状| eland是什么牌子| 大便长期不成形是什么原因| 脂蛋白是什么| 女性尿道炎挂什么科| 考研复试考什么| 月什么人什么| 眼痒用什么眼药水| 阴阳数字是什么数| 昏睡是什么症状| 孕早期吃什么有利于胎心胎芽发育| jay是什么意思| 镇党委副书记是什么级别| 4.12是什么星座| 短装是什么意思| 飞蚊症是什么原因造成的能治愈吗| 麒麟臂什么意思| 5月31号是什么星座| 什么玉便宜又养人| 辽宁古代叫什么| 绝世是什么意思| 凉粉是什么材料做的| 骨折吃什么恢复得快| 做梦吃鱼是什么意思| Q什么意思| 5月12日什么星座| 15度穿什么衣服合适| 咽炎挂什么科| h是什么元素| 婆什么起舞| 火加良念什么| 送老师什么礼物好| 牙出血是什么病的前兆| 美国人的祖先是什么人| 折耳根是什么| 大乌叶是什么茶| 咳嗽吃什么药| 木须是什么| 一什么毛巾| 什么是什么意思| 家里进黄鼠狼是什么预兆| 牛三合生肖是什么| kailas是什么牌子| 夕阳红是什么意思| 百合什么时候开花| 八月初十是什么星座| 心慌意乱是什么意思| 免贵姓是什么意思| 地藏王菩萨是管什么的| 经常放响屁是什么原因| 什么牌子的蛋白质粉比较好| 冻豆腐炖什么好吃| 五行缺什么怎么算| 舟可是什么字| 河南古代叫什么| 月经颜色发黑是什么原因| 吃什么可以提高免疫力和抵抗力| 女性私下有苦味主要是什么原因| 什么东西能加不能减| 日常是什么意思| 梦见和别人结婚是什么意思| 母乳是什么味| 子宫有问题有什么症状| 发烧时不宜喝什么饮料| 卧蚕是什么意思| 吃什么奶水会增多| 催乳素是什么| 什么姿势舒服| choker什么意思| comeon什么意思| 画龙点睛指什么生肖| 为什么会有肾结石| 人巨细胞病毒是什么病| 双子座是什么时候| 高密度脂蛋白偏高是什么意思| 掉头发是什么原因女性| wbc是什么| 尿微量白蛋白是什么意思| 外阴瘙痒用什么药膏擦| 劳您费心了什么意思| 中央候补委员是什么级别| 男人吃荔枝有什么好处| 仓鼠不能吃什么| 头发里长痣代表什么| 草莓是什么形状| 丙三醇是什么东西| 类风湿关节炎吃什么好| 火山为什么会喷发| 什么的脊背| 骨龄是什么意思| 美女是指什么生肖| 土命缺什么| 窦性心律过缓是什么意思| 脚肿是什么病| 急性呼吸道感染是什么引起的| 五朵金花是什么意思| 辅酶q10的作用是什么| pp材质是什么| 胃角在什么位置图片| 骨折喝什么汤恢复得快| 大便水状是什么原因| 火影忍者大结局是什么| 备孕喝豆浆有什么好处| 怀孕前期有什么症状| 治疗早泄吃什么药| 血糖高去医院挂什么科| 大便隐血弱阳性是什么意思| 狗狗的鼻子为什么是湿的| 红茶加枸杞有什么功效| 耳鼻喉科属于什么科| 牙虫是什么样的图片| 蝗虫用什么呼吸| 心肌供血不足用什么药| 晚上睡觉牙齿出血是什么原因| 脚上有青筋是什么原因| 额头出汗多是什么原因| 百度Jump to content

8大项目签约湖南岳阳绿色化工产业园

From Wikipedia, the free encyclopedia
jEdit's macro editor
百度 各国需要平等协商,同舟共济,合作应对,促进贸易和投资自由化、便利化,推动经济全球化,朝着更加开放包容普惠平衡共赢的方向发展。

In computer programming, a macro (short for "macro instruction"; from Greek μακρο- 'long, large'[1]) is a rule or pattern that specifies how a certain input should be mapped to a replacement output. Applying a macro to an input is known as macro expansion.

The input and output may be a sequence of lexical tokens or characters, or a syntax tree. Character macros are supported in software applications to make it easy to invoke common command sequences. Token and tree macros are supported in some programming languages to enable code reuse or to extend the language, sometimes for domain-specific languages.

Macros are used to make a sequence of computing instructions available to the programmer as a single program statement, making the programming task less tedious and less error-prone.[2][3] Thus, they are called "macros" because a "big" block of code can be expanded from a "small" sequence of characters. Macros often allow positional or keyword parameters that dictate what the conditional assembler program generates and have been used to create entire programs or program suites according to such variables as operating system, platform or other factors. The term derives from "macro instruction", and such expansions were originally used in generating assembly language code.

Keyboard and mouse macros

[edit]

Keyboard macros and mouse macros allow short sequences of keystrokes and mouse actions to transform into other, usually more time-consuming, sequences of keystrokes and mouse actions. In this way, frequently used or repetitive sequences of keystrokes and mouse movements can be automated. Separate programs for creating these macros are called macro recorders.

During the 1980s, macro programs – originally SmartKey, then SuperKey, KeyWorks, Prokey – were very popular, first as a means to automatically format screenplays, then for a variety of user-input tasks. These programs were based on the terminate-and-stay-resident mode of operation and applied to all keyboard input, no matter in which context it occurred. They have to some extent fallen into obsolescence following the advent of mouse-driven user interfaces and the availability of keyboard and mouse macros in applications, such as word processors and spreadsheets, making it possible to create application-sensitive keyboard macros.

Keyboard macros can be used in massively multiplayer online role-playing games (MMORPGs) to perform repetitive, but lucrative tasks, thus accumulating resources. As this is done without human effort, it can skew the economy of the game. For this reason, use of macros is a violation of the TOS or EULA of most MMORPGs, and their administrators spend considerable effort to suppress them.[4]

Application macros and scripting

[edit]

Keyboard and mouse macros that are created using an application's built-in macro features are sometimes called application macros. They are created by carrying out the sequence once and letting the application record the actions. An underlying macro programming language, most commonly a scripting language, with direct access to the features of the application may also exist.

The programmers' text editor Emacs (short for "editing macros") follows this idea to a conclusion. In effect, most of the editor is made of macros. Emacs was originally devised as a set of macros in the editing language TECO; it was later ported to dialects of Lisp.

Another programmers' text editor, Vim (a descendant of vi), also has an implementation of keyboard macros. It can record into a register (macro) what a person types on the keyboard and it can be replayed or edited just like VBA macros for Microsoft Office. Vim also has a scripting language called Vimscript[5] to create macros.

Visual Basic for Applications (VBA) is a programming language included in Microsoft Office from Office 97 through Office 2019 (although it was available in some components of Office prior to Office 97). However, its function has evolved from and replaced the macro languages that were originally included in some of these applications.

XEDIT, running on the Conversational Monitor System (CMS) component of VM, supports macros written in EXEC, EXEC2 and REXX, and some CMS commands were actually wrappers around XEDIT macros. The Hessling Editor (THE), a partial clone of XEDIT, supports Rexx macros using Regina and Open Object REXX (oorexx). Many common applications, and some on PCs, use Rexx as a scripting language.

Macro virus

[edit]

VBA has access to most Microsoft Windows system calls and executes when documents are opened. This makes it relatively easy to write computer viruses in VBA, commonly known as macro viruses. In the mid-to-late 1990s, this became one of the most common types of computer virus. However, during the late 1990s and to date, Microsoft has been patching and updating its programs.[citation needed] In addition, current anti-virus programs immediately counteract such attacks.

Parameterized and parameterless macro

[edit]

A parameterized macro is a macro that is able to insert given objects into its expansion. This gives the macro some of the power of a function.

As a simple example, in the C programming language, this is a typical macro that is not a parameterized macro, i.e., a parameterless macro:

 #define PI   3.14159

This causes PI to always be replaced with 3.14159 wherever it occurs. An example of a parameterized macro, on the other hand, is this:

 #define pred(x)  ((x)-1)

What this macro expands to depends on what argument x is passed to it. Here are some possible expansions:

 pred(2)    →  ((2)   -1)
 pred(y+2)  →  ((y+2) -1)
 pred(f(5)) →  ((f(5))-1)

Parameterized macros are a useful source-level mechanism for performing in-line expansion, but in languages such as C where they use simple textual substitution, they have a number of severe disadvantages over other mechanisms for performing in-line expansion, such as inline functions.

The parameterized macros used in languages such as Lisp, PL/I and Scheme, on the other hand, are much more powerful, able to make decisions about what code to produce based on their arguments; thus, they can effectively be used to perform run-time code generation.

Text-substitution macros

[edit]

Languages such as C and some assembly languages have rudimentary macro systems, implemented as preprocessors to the compiler or assembler. C preprocessor macros work by simple textual substitution at the token, rather than the character level. However, the macro facilities of more sophisticated assemblers, e.g., IBM High Level Assembler (HLASM) can't be implemented with a preprocessor; the code for assembling instructions and data is interspersed with the code for assembling macro invocations.

A classic use of macros is in the computer typesetting system TeX and its derivatives, where most functionality is based on macros.[6]

MacroML is an experimental system that seeks to reconcile static typing and macro systems. Nemerle has typed syntax macros, and one productive way to think of these syntax macros is as a multi-stage computation.

Other examples:

Some major applications have been written as text macro invoked by other applications, e.g., by XEDIT in CMS.

Embeddable languages

[edit]

Some languages, such as PHP, can be embedded in free-format text, or the source code of other languages. The mechanism by which the code fragments are recognised (for instance, being bracketed by <?php and ?>) is similar to a textual macro language, but they are much more powerful, fully featured languages.

Procedural macros

[edit]

Macros in the PL/I language are written in a subset of PL/I itself: the compiler executes "preprocessor statements" at compilation time, and the output of this execution forms part of the code that is compiled. The ability to use a familiar procedural language as the macro language gives power much greater than that of text substitution macros, at the expense of a larger and slower compiler. Macros in PL/I, as well as in many assemblers, may have side effects, e.g., setting variables that other macros can access.

Frame technology's frame macros have their own command syntax but can also contain text in any language. Each frame is both a generic component in a hierarchy of nested subassemblies, and a procedure for integrating itself with its subassembly frames (a recursive process that resolves integration conflicts in favor of higher level subassemblies). The outputs are custom documents, typically compilable source modules. Frame technology can avoid the proliferation of similar but subtly different components, an issue that has plagued software development since the invention of macros and subroutines.

Most assembly languages have less powerful procedural macro facilities, for example allowing a block of code to be repeated N times for loop unrolling; but these have a completely different syntax from the actual assembly language.

Syntactic macros

[edit]

Macro systems—such as the C preprocessor described earlier—that work at the level of lexical tokens cannot preserve the lexical structure reliably. Syntactic macro systems work instead at the level of abstract syntax trees, and preserve the lexical structure of the original program. The most widely used implementations of syntactic macro systems are found in Lisp-like languages. These languages are especially suited for this style of macro due to their uniform, parenthesized syntax (known as S-expressions). In particular, uniform syntax makes it easier to determine the invocations of macros. Lisp macros transform the program structure itself, with the full language available to express such transformations. While syntactic macros are often found in Lisp-like languages, they are also available in other languages such as Prolog,[7] Erlang,[8] Dylan,[9] Scala,[10] Nemerle,[11] Rust,[12] Elixir,[13] Nim,[14] Haxe,[15] and Julia.[16] They are also available as third-party extensions to JavaScript[17] and C#.[18]

Early Lisp macros

[edit]

Before Lisp had macros, it had so-called FEXPRs, function-like operators whose inputs were not the values computed by the arguments but rather the syntactic forms of the arguments, and whose output were values to be used in the computation. In other words, FEXPRs were implemented at the same level as EVAL, and provided a window into the meta-evaluation layer. This was generally found to be a difficult model to reason about effectively.[19]

In 1963, Timothy Hart proposed adding macros to Lisp 1.5 in AI Memo 57: MACRO Definitions for LISP.[20]

Anaphoric macros

[edit]

An anaphoric macro is a type of programming macro that deliberately captures some form supplied to the macro which may be referred to by an anaphor (an expression referring to another). Anaphoric macros first appeared in Paul Graham's On Lisp and their name is a reference to linguistic anaphora—the use of words as a substitute for preceding words.

Hygienic macros

[edit]

In the mid-eighties, a number of papers[21][22] introduced the notion of hygienic macro expansion (syntax-rules), a pattern-based system where the syntactic environments of the macro definition and the macro use are distinct, allowing macro definers and users not to worry about inadvertent variable capture (cf. referential transparency). Hygienic macros have been standardized for Scheme in the R5RS, R6RS, and R7RS standards. A number of competing implementations of hygienic macros exist such as syntax-rules, syntax-case, explicit renaming, and syntactic closures. Both syntax-rules and syntax-case have been standardized in the Scheme standards.

Recently, Racket has combined the notions of hygienic macros with a "tower of evaluators", so that the syntactic expansion time of one macro system is the ordinary runtime of another block of code,[23] and showed how to apply interleaved expansion and parsing in a non-parenthesized language.[24]

A number of languages other than Scheme either implement hygienic macros or implement partially hygienic systems. Examples include Scala, Rust, Elixir, Julia, Dylan, Nim, and Nemerle.

Applications

[edit]
Evaluation order
Macro systems have a range of uses. Being able to choose the order of evaluation (see lazy evaluation and non-strict functions) enables the creation of new syntactic constructs (e.g. control structures) indistinguishable from those built into the language. For instance, in a Lisp dialect that has cond but lacks if, it is possible to define the latter in terms of the former using macros. For example, Scheme has both continuations and hygienic macros, which enables a programmer to design their own control abstractions, such as looping and early exit constructs, without the need to build them into the language.
Data sub-languages and domain-specific languages
Next, macros make it possible to define data languages that are immediately compiled into code, which means that constructs such as state machines can be implemented in a way that is both natural and efficient.[25]
Binding constructs
Macros can also be used to introduce new binding constructs. The most well-known example is the transformation of let into the application of a function to a set of arguments.

Felleisen conjectures[26] that these three categories make up the primary legitimate uses of macros in such a system. Others have proposed alternative uses of macros, such as anaphoric macros in macro systems that are unhygienic or allow selective unhygienic transformation.

The interaction of macros and other language features has been a productive area of research. For example, components and modules are useful for large-scale programming, but the interaction of macros and these other constructs must be defined for their use together. Module and component-systems that can interact with macros have been proposed for Scheme and other languages with macros. For example, the Racket language extends the notion of a macro system to a syntactic tower, where macros can be written in languages including macros, using hygiene to ensure that syntactic layers are distinct and allowing modules to export macros to other modules.

Macros for machine-independent software

[edit]

Macros are normally used to map a short string (macro invocation) to a longer sequence of instructions. Another, less common, use of macros is to do the reverse: to map a sequence of instructions to a macro string. This was the approach taken by the STAGE2 Mobile Programming System, which used a rudimentary macro compiler (called SIMCMP) to map the specific instruction set of a given computer into machine-independent macros. Applications (notably compilers) written in these machine-independent macros can then be run without change on any computer equipped with the rudimentary macro compiler. The first application run in such a context is a more sophisticated and powerful macro compiler, written in the machine-independent macro language. This macro compiler is applied to itself, in a bootstrap fashion, to produce a compiled and much more efficient version of itself. The advantage of this approach is that complex applications can be ported from one computer to a very different computer with very little effort (for each target machine architecture, just the writing of the rudimentary macro compiler).[27][28] The advent of modern programming languages, notably C, for which compilers are available on virtually all computers, has rendered such an approach superfluous. This was, however, one of the first instances (if not the first) of compiler bootstrapping.

Assembly language

[edit]

While macro instructions can be defined by a programmer for any set of native assembler program instructions, typically macros are associated with macro libraries delivered with the operating system allowing access to operating system functions such as

  • peripheral access by access methods (including macros such as OPEN, CLOSE, READ and WRITE)
  • operating system functions such as ATTACH, WAIT and POST for subtask creation and synchronization.[29] Typically such macros expand into executable code, e.g., for the EXIT macroinstruction,
  • a list of define constant instructions, e.g., for the DCB macro—DTF (Define The File) for DOS[30]—or a combination of code and constants, with the details of the expansion depending on the parameters of the macro instruction (such as a reference to a file and a data area for a READ instruction);
  • the executable code often terminated in either a branch and link register instruction to call a routine, or a supervisor call instruction to call an operating system function directly.
  • Generating a Stage 2 job stream for system generation in, e.g., OS/360. Unlike typical macros, sysgen stage 1 macros do not generate data or code to be loaded into storage, but rather use the PUNCH statement to output JCL and associated data.

In older operating systems such as those used on IBM mainframes, full operating system functionality was only available to assembler language programs, not to high level language programs (unless assembly language subroutines were used, of course), as the standard macro instructions did not always have counterparts in routines available to high-level languages.

History

[edit]

In the mid-1950s, when assembly language programming was the main way to program a computer, macro instruction features were developed to reduce source code (by generating multiple assembly statements from each macro instruction) and to enforce coding conventions (e.g. specifying input/output commands in standard ways).[31] A macro instruction embedded in the otherwise assembly source code would be processed by a macro compiler, a preprocessor to the assembler, to replace the macro with one or more assembly instructions. The resulting code, pure assembly, would be translated to machine code by the assembler.[32]

Two of the earliest programming installations to develop macro languages for the IBM 705 computer were at Dow Chemical Corp. in Delaware and the Air Material Command, Ballistics Missile Logistics Office in California.

Some consider macro instructions as an intermediate step between assembly language programming and the high-level programming languages that followed, such as FORTRAN and COBOL.

By the late 1950s the macro language was followed by the Macro Assemblers. This was a combination of both where one program served both functions, that of a macro pre-processor and an assembler in the same package.[32][failed verification] Early examples are FORTRAN Assembly Program (FAP)[33] and Macro Assembly Program (IBMAP)[34] on the IBM 709, 7094, 7040 and 7044, and Autocoder[35] on the 7070/7072/7074.

In 1959, Douglas E. Eastwood and Douglas McIlroy of Bell Labs introduced conditional and recursive macros into the popular SAP assembler,[36] creating what is known as Macro SAP.[37] McIlroy's 1960 paper was seminal in the area of extending any (including high-level) programming languages through macro processors.[38][36]

Macro Assemblers allowed assembly language programmers to implement their own macro-language and allowed limited portability of code between two machines running the same CPU but different operating systems, for example, early versions of MS-DOS and CP/M-86. The macro library would need to be written for each target machine but not the overall assembly language program. Note that more powerful macro assemblers allowed use of conditional assembly constructs in macro instructions that could generate different code on different machines or different operating systems, reducing the need for multiple libraries.[citation needed]

In the 1980s and early 1990s, desktop PCs were only running at a few MHz and assembly language routines were commonly used to speed up programs written in C, Fortran, Pascal and others. These languages, at the time, used different calling conventions. Macros could be used to interface routines written in assembly language to the front end of applications written in almost any language. Again, the basic assembly language code remained the same, only the macro libraries needed to be written for each target language.[citation needed]

In modern operating systems such as Unix and its derivatives, operating system access is provided through subroutines, usually provided by dynamic libraries. High-level languages such as C offer comprehensive access to operating system functions, obviating the need for assembler language programs for such functionality.[citation needed]

Moreover, standard libraries of several newer programming languages, such as Go, actively discourage the use of syscalls in favor of platform-agnostic libraries as well if not necessary, to improve portability and security.[39]

See also

[edit]

References

[edit]
  1. ^ Oxford English Dictionary, s.v. macro, macro-instruction, and macro-
  2. ^ Greenwald, Irwin D.; Kane, Maureen (April 1959). "The Share 709 System: Programming and Modification". Journal of the ACM. 6 (2). New York, NY, USA: ACM: 128–133. doi:10.1145/320964.320967. S2CID 27424222. One of the important uses of programmer macros is to save time and clerical-type errors in writing sequence of instructions which are often repeated in the course of a program.
  3. ^ Strachey, Christopher (October 1965). "A General Purpose Macrogenerator". Computer Journal. 8 (3): 225–241. doi:10.1093/comjnl/8.3.225.
  4. ^ "Runescape: The Massive Online Adventure Game by Jagex Ltd". Retrieved 2025-08-05.
  5. ^ "scripts: vim online". www.vim.org.
  6. ^ Fine, Johnathan. "T E X forever!" (PDF). Tex Users Group. p. 141. Retrieved 6 December 2024. TEX has a macro programming language, which allows features to be added.
  7. ^ "Prolog Macros". www.metalevel.at. Retrieved 2025-08-05.
  8. ^ "Erlang -- Preprocessor". erlang.org. Retrieved 2025-08-05.
  9. ^ "The Dylan Macro System — Open Dylan". opendylan.org. Retrieved 2025-08-05.
  10. ^ "Def Macros". Scala Documentation. Retrieved 2025-08-05.
  11. ^ "About - Nemerle programming language official site". nemerle.org. Retrieved 2025-08-05.
  12. ^ "Macros - The Rust Programming Language". doc.rust-lang.org. Retrieved 2025-08-05.
  13. ^ "Macros". elixir-lang.github.com. Retrieved 2025-08-05.
  14. ^ "macros". nim-lang.org. Retrieved 2025-08-05.
  15. ^ "Macros". Haxe - The Cross-platform Toolkit.
  16. ^ "Metaprogramming · The Julia Language". docs.julialang.org. Retrieved 2025-08-05.
  17. ^ "Sweet.js - Hygienic Macros for JavaScript". www.sweetjs.org.
  18. ^ "LeMP Home Page · Enhanced C#". ecsharp.net.
  19. ^ Marshall, Joe. "untitled email". Retrieved May 3, 2012.
  20. ^ Hart, Timothy P. (October 1963). "MACRO Definitions for LISP". AI Memos. hdl:1721.1/6111. AIM-057.
  21. ^ Kohlbecker, Eugene; Friedman, Daniel; Felleisen, Matthias; Duba, Bruce (1986). "Hygienic Macro Expansion". LFP '86: Proceedings of the 1986 ACM conference on LISP and functional programming. pp. 151–161. doi:10.1145/319838.319859. ISBN 0897912004.
  22. ^ [1] Clinger, Rees. "Macros that Work"
  23. ^ Flatt, Matthew. "Composable and compilable macros: you want it when?" (PDF).
  24. ^ Rafkind, Jon; Flatt, Matthew. "Honu: Syntactic Extension for Algebraic Notation through Enforestation" (PDF).
  25. ^ "Automata via Macros". cs.brown.edu.
  26. ^ [2], Matthias Felleisen, LL1 mailing list posting
  27. ^ Orgass, Richard J.; Waite, William M. (September 1969). "A base for a mobile programming system". Communications of the ACM. 12 (9). New York, NY, USA: ACM: 507–510. doi:10.1145/363219.363226. S2CID 8164996.
  28. ^ Waite, William M. (July 1970). "The mobile programming system: STAGE2". Communications of the ACM. 13 (7). New York, NY, USA: ACM: 415–421. doi:10.1145/362686.362691. S2CID 11733598.
  29. ^ "University of North Florida" (PDF). Archived from the original (PDF) on 2025-08-05. Retrieved 2025-08-05.
  30. ^ "DTF (DOS/VSE)". IBM.
  31. ^ "IBM Knowledge Center". IBM Knowledge Center. 16 August 2013.
  32. ^ a b "Assembler Language Macro Instructions". Cisco.
  33. ^ FORTRAN ASSEMBLY PROGRAM (FAP) for the IBM 709/7090 (PDF). 709/7090 Data Processing System Bulletin. IBM. 1961. J28-6098-1.
  34. ^ IBM 7090/7094 Programming Systems: - Macro Assembly Program (MAP) Language (PDF). Systems Reference Library. 1964. C28-6311-4. Retrieved January 12, 2025.
  35. ^ Reference Manual - IBM 7070 Series Programming Systems - Autocoder (PDF). IBM Systems Reference Library (First ed.). IBM Corporation . 1961. C28-6121-0.
  36. ^ a b Holbrook, Bernard D.; Brown, W. Stanley. "Computing Science Technical Report No. 99 – A History of Computing Research at Bell Laboratories (1937–1975)". Bell Labs. Archived from the original on September 2, 2014. Retrieved February 2, 2020.
  37. ^ "Macro SAP – Macro compiler modification of SAP". HOPL: Online Historical Encyclopaedia of Programming Languages. Archived from the original on August 13, 2008.
  38. ^ Layzell, P. (1985). "The History of Macro Processors in Programming Language Extensibility". The Computer Journal. 28 (1): 29–33. doi:10.1093/comjnl/28.1.29.
  39. ^ "syscall package - syscall - Go Packages". pkg.go.dev. Retrieved 2025-08-05.
[edit]
梦见自己怀孕大肚子是什么预兆 什么加什么等于红色 杀鸡取卵是什么生肖 419什么意思 屁多屁臭是什么原因
钮祜禄氏现在姓什么 心三联是指什么 东是什么生肖 缠腰蛇是什么原因引起的 儿保是什么
鸡炖什么好吃 bart是什么意思 去湿气吃什么药 什么相照 崖柏对人体有什么好处
梦见自己找工作是什么意思 寻麻疹是什么 梦见棺材是什么征兆 上海古代叫什么 怀孕第一个月最怕什么
职业病是什么意思hcv8jop3ns7r.cn 树大招风的意思是什么cj623037.com 口角是什么意思hcv8jop3ns8r.cn 上颌窦囊肿是什么意思hcv8jop7ns5r.cn 众叛亲离什么意思hcv8jop1ns8r.cn
蜱虫咬人后有什么症状图片hcv7jop9ns4r.cn 糖耐是什么hcv9jop3ns2r.cn 拉稀吃什么药最有效果hcv9jop7ns4r.cn 舌自心念什么chuanglingweilai.com 抄送和密送是什么意思hcv7jop9ns2r.cn
菌痢的症状是什么样hcv9jop8ns0r.cn 小肚子发胀是什么原因女性adwl56.com 吃什么养心hcv8jop8ns3r.cn 玄冥是什么意思hcv7jop9ns3r.cn 跑步什么时候跑最好jingluanji.com
藏红花可以搭配什么泡水喝baiqunet.com 眼泪多是什么原因youbangsi.com 什么是特异性皮炎hcv8jop0ns1r.cn 包茎不割会有什么影响hcv9jop7ns3r.cn 膘是什么意思hcv9jop1ns5r.cn
百度