找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
楼主: 耶稣爱子

请教:什么样的程序是宏程序?宏程序和普通程序的区别是什么?

  [复制链接]
发表于 2013-10-26 21:53:11 | 显示全部楼层
冷月梧桐 发表于 2013-10-26 11:04
& B; X3 W" a, {6 ]8 q: @* ?& _我认为涉及变量,循环都算是宏程序。声明我是业余的,不是专业的。问你一个问题,什么是普通程序,什么是 ...

7 m6 ^, w. r% @ 啊?是这样理解的吗?我一直以为vb编程的另一种叫法是宏程序,
5 v/ o# ^. C. `/ \
* Q0 u9 G: k- ]$ O; x8 z" @  k( A如果按你所说的,c语言等都有变量、循环,那也叫宏程序吗?
% @! A! ?7 F' S0 e5 V) D# C
6 e# g& G8 H+ k+ K! a. S: G4 }
( |+ m; @# d, D1 {3 W2 i2 W
2 A8 b9 x' `# A# Q4 `: n

点评

不是咬文嚼字,那c能叫宏程序吗?  发表于 2013-10-26 22:34
C 和VB不带变量你玩什么呀??不和你们咬文嚼字了  发表于 2013-10-26 22:17
发表于 2013-10-26 22:43:03 | 显示全部楼层
macro的中文名称:宏5 f7 D% @% ^: T! Q! ~
什么是宏) R/ w7 W- e4 r( x2 `  B
  计算机科学里的宏是一种抽象,它根据一系列预定义的规则替换一定的文本模式。Excel 办公软件自动集成了“VBA”高级程序语言,用此语言编制出的程序就叫“宏”。使用“VBA”需要有一定的编程基础和耗费大量的时间,因此,绝大多数的使用者仅使用了Excel的一般制表功能,很少使用到“VBA”。
- s0 ?8 ~1 l& G) \
8 v- a$ t3 B: C! O5 k' e% Q* P  解释器或编译器在遇到宏时会自动进行这一模式替换。对于编译语言,宏展开在编译时发生,进行宏展开的工具常被称为宏展开器。宏这一术语也常常被用于许多类似的环境中,它们是源自宏展开的概念,这包括键盘宏和宏语言。绝大多数情况下,使用“宏”这个词的使用暗示着将小命令或动作转化为一系列指令。
: P# b4 x% ]7 F+ A( Q  |
: o0 A+ A8 u( v9 v  宏的用途在于自动化频繁使用的序列或者是获得一种更强大的抽象能力--但这常常是一回事。 % O4 p  q6 ]! @& |& ~

! k  q4 j/ N& J( N6 M; A  计算机语言如C或汇编语言有简单的宏系统,由编译器或汇编器的预处理器实现。C的宏预处理器的工作只是简单的文本搜索和替换,使用附加的文本处理语言如M4,C程序员可以获得更精巧的宏。 / _. c7 v" }3 e' @

1 ^9 b3 T& M( q4 D  Lisp类语言如Common Lisp和Scheme有更精巧的宏系统: 宏的行为如同是函数对自身程序文本的变形,并且可以应用全部语言来表达这种变形。一个C宏可以定义一段语法的替换,然而一个Lisp的宏却可以控制一节代码的计算。
2 Q' R( E0 l6 s9 V4 \
' z3 J* M6 x. a# k3 A2 F$ M  获得了控制代码的执行顺序(见惰性计算和非限制函数)的能力,使得新创建的语法结构与语言内建的语法结构不可区分。例如,一种Lisp 方言有 cond 而没有if ,就可以使用宏由前者定义后者。Lisp 语法的去部主要扩展,比如面向对象的CLOS 系统,可以由宏来定义。7 {4 q( v0 M8 v) j- D% D
宏的典型应用
3 o! m, X/ Y/ C) H' i" p1 ]# w  加速日常编辑和格式设置 : U; r: a* k: Q1 _
0 [5 q  B$ T3 C' N* Y) M5 X$ g
  组合多个命令
- O5 ]8 c, D( F  q
! s4 e6 `# W( D1 y* {  使对话框中的选项更易于访问 * G2 {+ n6 Z3 Q0 V0 h* M7 {4 e
9 G2 ~; E" t8 O$ e
  使一系列复杂的任务自动执行& n  F! q. [; {$ H/ C! w
宏编程介绍
% q" Q0 X; C' T! }, K, i  在用一种不熟悉的宏语言进行宏编程时,可以这样做,首先记录下用户想要宏完成什么,然后打开宏文件并尝试理解命令结构如何工作。也可以修改命令以调整宏。一些宏语言,比如Great Plains账务(?accounting)软件的 Dexterity 运行时引擎,不能从其它数据源(如由逗号分隔的文本文件)导入数据。这一限制可以通过用更强大的编程语言,如 VBA 来创建一个计算机程序在此弱编程语言里生成一个特别的宏来解决。例如,可以对 Microsoft Excel 宏编程从扩展样式表或文本文件中读取数据并创建 Great Plains .mac 文件,这一文件被用于将特定的数据导入 Great Plains. 需要针对每一个新的数据集合声称新的 .mac 文件。' q  ]8 `7 C2 A. X
键盘宏4 w1 o2 F1 m" q9 q
  键盘宏和编辑器宏分别在图形用户界面和编辑器中被交互式地使用。使用它们可以用简短的击键代替冗长的命令序列,并为重复性任务提供了一个简单的自动化形式。 5 Q7 v) t! D/ s: z+ n9 f3 A
" V- e; ~6 F1 L4 {0 ]
  程序员的文本编辑器 Emacs (“编辑宏”[Editing MACroS]的简称)是沿用这一思想的产物。事实上,大多数编辑器是由宏组成的,Emacs 最初被设计为编辑语言 TECO 的宏集,后被移植为 Lisp 的一中方言 Emacs Lisp。
, H  h9 q8 C' c4 |6 r4 ]宏语言; ^9 a  f( H0 M" ?
  宏语言是一类编程语言,其全部或多数计算是由扩展宏完成的。宏语言并未在通用编程中广泛使用,但在文本处理程序中应用普遍。例如, 4 r' o. @3 L  z* T. {3 \
3 B0 W) ^* ~' _3 b  F0 k
  C preprocessor C 预处理器
. x- M+ g3 p) B4 @$ F  Y, i1 I, C) `
  Internet Macros(iOpus)   u# `  b  p6 |! [

- ]4 V7 z# Y9 k9 `  M4(如前所述,源于AT&T,捆绑于Unix)
: |  u3 T8 Y: ~) Z/ e
  y/ ]( {+ t* N  宏定义
* A" c# \0 v6 X, W5 Q( G
" h; P" J) A! o9 _( e  c) j9 s  c程序提供的预处理功能之一。包括带参数的宏定义和不带参数的宏定义。具体是指用一个指定的标志符来进行简单的字符串替换或者进行阐述替换。形式为:
. z5 F/ G" @. q) w4 ~
$ p  H* a$ [" }1 G  N4 P  #define标志符(参数表) 字符串
6 ]% A5 q+ X  E6 I* K% O# l- q7 J
  宏名
! J' G( ?$ F+ E$ k% V! h" f3 s. x% K' g' v. `
  在上定义中的标志符被称为“宏名”。 " z% u( Q' {9 N4 t7 j  U) L
4 U+ [8 h+ n3 G, p0 B- y& }
  宏展开
; X0 H0 k  z! a: ^  V
$ {! h; X" {2 L5 Q  在c程序编译时将宏名替换成字符串的过程称为“宏展开”。0 e3 g/ M8 r+ B' j2 h2 S/ i' a
微软Word和宏病毒( [- K$ {& P# d8 A( p( _, n
  Visual Basic for Applications (VBA),是 Microsoft Office 里的一种编程语言. 但由上面的定义,它完全不是一种宏语言。然而,它的功能已经从中发展并最终替代了用户应用程序的宏思想,所以他被广泛地错误地称为是一种宏语言。 8 T3 M* w3 f& J; A% X% N3 u

; A* f6 `( `, Y8 R0 O. R' q8 L  VBA 可以访问许多操作系统函数并支持文档打开时自动执行宏。这使得用这种语言写计算机病毒成为可能。1990年代中后期,宏病毒成为了最流行的计算机病毒类型之一。其它的包括宏语言的项目,如openoffice org,故意从其宏语言中排除了一些功能(如:自动执行)以避免破坏程序。然而,这一特性在很多事务中受到欢迎。 6 Y( y' T# p( Y1 }& P2 }
' a- [5 F* g5 D/ n& N
  另:在数码相机镜头中Marco的意思是微距。
6 L8 O# }4 z* U" N8 }# Z+ E* p  J/ }" i7 p% f$ c/ U
词典所得,原来都能跟宏有关!

评分

参与人数 1威望 +1 收起 理由
耶稣爱子 + 1 热心助人!

查看全部评分

发表于 2013-10-29 13:05:21 | 显示全部楼层
冷月梧桐 发表于 2013-10-24 18:45
- L$ |  r8 _& i2 x' h, `8 INO1.宏程序之于普通程序主要是引用变量,设置循环条件,可以完成相同类似工件的加工,其实G83就可以理解成是 ...

/ U! t; ^% @" I' M) }我认为第三点的说法有问题。宏程序号和普通程序、子程序在CNC内部处理时是不一样的,而且宏程序必须是O9000~9999中的一个,其他的程序号只能成为子程序或普通程序。3 V" b% B8 ^6 u6 y% D) ]
发表于 2013-10-29 17:50:16 | 显示全部楼层
oleg0007 发表于 2013-10-29 13:05 4 T1 _* L1 j" C$ a* f8 {; F: j+ O4 F6 ^
我认为第三点的说法有问题。宏程序号和普通程序、子程序在CNC内部处理时是不一样的,而且宏程序必须是O90 ...
4 S+ O+ Z8 |4 O7 T" R# \: a* X2 G
实际是宏程序的程序名是任意的,放在9000以后主要是可以对这部分程序加锁而已
发表于 2013-10-29 20:58:53 | 显示全部楼层
宏程序用的不多
发表于 2013-11-24 18:54:35 | 显示全部楼层
谢谢2楼的普及啊!
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-9-21 22:51 , Processed in 0.084563 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表