精华内容
下载资源
问答
  • C语言
    千次阅读
    2021-05-19 20:24:45

    本篇文章帮大家学习c语言宏,包含了C语言宏使用方法、操作技巧、实例演示和注意事项,有一定的学习价值,大家可以用来参考。

    宏是一种可由宏的值代替的代码段。 宏由#define指令定义。 有两种类型的宏:

    类似对象的宏

    类似函数的宏

    类似对象的宏

    类似对象的宏是一种被值替换的标识符。它广泛用于表示数字常数。 例如:

    #define PI 3.14

    这里,PI就是代替值3.14的宏名称,对于宏名称可使用与变量命名规则相同的其它名称。

    类似函数的宏

    类似函数的宏看起来像函数调用。例如:

    #define MIN(a,b) ((a)

    这里,MIN是宏的名称。

    可通过访问#define来查看类似对象和类似函数的宏的完整示例。

    C预定义宏

    ANSI C定义了许多可在C语言程序中使用的预定义的宏。如下列表所示 -

    序号

    说明

    1

    _DATE_

    以“MMM DD YYYY”格式表示当前日期。

    2

    _TIME_

    以“HH:MM:SS”格式表示当前时间。

    3

    _FILE_

    表示当前文件名。

    4

    _LINE_

    表示当前行。

    5

    _STDC_

    当编译器符合ANSI标准时,它被定义为1。

    C语言预定义的宏示例

    为了更好地演示如何使用C语言预定义的宏,我们创建一个源文件:predefined-macros.c 在工程 preprocessor 中,其代码如下所示 -

    #include

    void main() {

    printf("File :%s\n", __FILE__);

    printf("Date :%s\n", __DATE__);

    printf("Time :%s\n", __TIME__);

    printf("Line :%d\n", __LINE__);

    //printf("STDC :%d\n", __STDC__); 不常用

    }

    执行上面示例代码,得到以下结果 -

    File :f:\worksp\clanguage\preprocessor\preprocessor\predefined-macros.c

    Date :Aug 17 2017

    Time :17:33:25

    Line :6

    更多相关内容
  • 电气设计||Eplan P8 功能的应用

    千次阅读 2020-12-28 20:58:13
    Eplan P8的功能非常强大,针对一设备,可以创建多线图、单线图、布置图等,同一宏中还可以包含变量。当你想创建很多,并且非常方便的管理他们的时候,项目是一不错的选择。下面介绍一下如何使用...

    Eplan P8

    的宏功能非常强大,针对一个设备,可以创建多线图、单线图、布置图等宏,同一个宏中还可以包含多个变量。当你想创建很多宏,并且非常方便的管理他们的时候,宏项目是一个不错的选择。下面介绍一下如何使用宏项目。

    1、创建宏项目

    首先新建一个项目,跟原理图项目一样,然后在弹出的项目属性窗口中找到type of project属性,将其更改为macro

    project。

    2、新建页

    跟原理图项目一样。此处以新建多线图为例,此例中将厂家名称写入==处,设备类别写入=处,型号写入+处,以方便查找和管理。

    3、画原理图

    也就是画你需要的宏了。可以画多个,因为Eplan P8支持同一个宏名称下有多个变量。此例中只画了一个。

    4、插入宏框

    前面只是画了一个原理图,但是eplan 并不认为它是宏。如何让它变成eplan合法的宏呢,那就是插入macro

    box。在菜单中依次点Insert-box/connection point/mounting panel-Macro

    box,就可以插入了。在弹出的窗口中输入宏的名字、变量等信息就ok了。不过一定要让macro

    box将你的原理图包含在内哦。我只有一个图形,就叫变量A了,如果你有多个图形,可以用同一个宏名称,不同的变量就可以了。做好的就是它了:

    5、生成宏

    刚才做的宏还是在宏项目中,怎么才能在原理图项目中使用呢,那就得生成宏。在菜单中依次点Utility-generate

    macros-automatically from macro

    project,就可以将宏项目中所有的宏或者某个选择的宏生成到你工作路径下的macro文件夹中了。就可以在原理图中插入了,插入时,按TAB建,可以选择使用变量A还是变量B还是其他变量。

    宏项目中创建的内容可不要删除哦,留着才能方便以后管理、修改、更新。

    如果你要对已有的宏进行操作,在宏项目里进行就可以了。

    如果macro文件夹中的宏文件不小心删除了,不要紧,打开宏项目,重复一下步骤5就ok了。

    展开全文
  • FANUC机器人支持记录150个宏指令,可以将现有的程序记录为宏指令,也可以单独创建宏程序,然后再将其记录为宏指令。 使用宏指令时可以按如下步骤进行: 1.创建一个程序作为宏程序,并对程序进行示教编程。 2.将所...

    本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注!

    概述

    宏指令是指把由若干个程序指令组成的机器人程序作为一条单独的指令来记录,进而调用并执行该指令的功能。FANUC机器人支持记录150个宏指令,可以将现有的程序记录为宏指令,也可以单独创建宏程序,然后再将其记录为宏指令。

    使用宏指令时可以按如下步骤进行:

    1.创建一个程序作为宏程序,并对程序进行示教编程。

    2.将所创建的宏程序作为宏指令予以记录,同时分配用来调用宏指令的启动设备。

    3.执行宏指令。

    宏指令设定说明

    在使用宏指令时,需要对宏程序、宏指令名称、宏指令启动设备分配三个概念加以明确,以下详细说明。

    宏程序

    宏程序是通过宏指令而被启动的程序。宏程序的示教与执行方法同普通程序一样,但作为宏程序会受到如下一些限制:

    机器人程序在作为宏程序被记录后,其子类型被更改为宏。取消记录后,将返回原先的子类型。

    宏画面上被记录的宏程序,不能直接删除,需要解除记录后才能删除。

    不伴随机器人运动(动作组)的宏指令,应尽量在不包含动作组的程序中创建。

    不包含机器人运动(动作组)的宏程序,即使机器人没有处在动作允许状态(如发生报警)也可以正常启动运行。

    宏指令名称

    宏指令名称是用来在程序中调用宏程序,宏指令名称支持最多36个字符,可以是英文字母或与数字的组合。

    宏指令启动设备分配

    宏指令启动设备分配用来确定可以通过哪种机器人设备来启动执行宏指令,宏指令的启动设备包括机器人示教器的手动操作画面、机器人示教器的用户按键、机器人I/O信号等,FANUC机器人能够被分配为启动宏指令的设备如下表所示。

    启动设备

    说明

    MF[1]~MF[99]

    手动操作画面的条目

    UK[1]~UK[7]

    示教器的用户按键1~7

    SU[1]~SU[7]

    示教器的用户按键1~7+SHIFT键

    SP[4]~SP[5]

    SP现在无法使用。

    DI[1]~DI[32766]

    DI1-32766

    RI[1]~RI[32766]

    RI1-32766

    UI[7]

    HOME信号

    F[1]~F[32766]

    F1~32766

    M[1]~M[32766]

    M1~32766

    宏指令设定方法

    在使用宏指令之前,首先需要创建一个宏程序,创建方法与创建普通程序步骤相同。对于没有机器人运动的程序,需要在“程序详细”画面的“组掩码”中屏蔽机器人动作组。

    对创建的宏程序进行示教编程,如下所示是控制机器人焊装夹具夹紧与松开的演示程序。

    宏程序编写完成后,在机器人示教器的操作面板上按“MENU”键,在弹出的菜单中依次选择“6 设置”→“设置 2”→“3 宏”。

    在宏命令画面中将光标移动到“指令名称”列,示教器的操作面板上按“ENTER”键,然后输入要设定的宏指令名称,如Macro1。

    将光标移动到宏指令的“程序”列中,然后按下方的“选择”,在弹出的机器人程序一览表中选择创建的宏程序,如TEST1。

    光标移动到宏指令的“分配”列中的“——”,然后按下方的“选择”,在弹出的机器人启动设备一览表中根据需要选择宏指令的启动设备,本案例选择MF,即在机器人示教器的手动操作画面启动执行宏指令。

    将光标移动到宏指令的“分配”列中启动设备编号设定栏,然后设定启动设备编号,如这里设置为MF[1]。

    如果需要删除宏指令的设定条目,可以将光标移动到相应的条目,按下方的“清除”,然后再按“是”,即可对其删除。

    宏指令执行说明

    可以通过机器人示教器的手动操作画面、机器人示教器的用户按键、机器人I/O信号以及机器人程序中的宏指令调用等方法来执行宏指令。

    宏指令启动执行宏程序的过程与普通机器人程序大致相同,不同的是宏指令需要在连续运行模式下执行,对于单步运行模式不起作用,并且每次启动宏指令都是从第一行程序开始执行,到最后一行强制结束。

    宏程序包含有机器人运动指令程序的情况下,必须在动作允许状态下执行宏指令,其中动作允许状态包含机器人ENBL输入信号处在ON、SYSRDY输出信号处在ON,两个条件必须同时成立。宏指令的执行运行条件如下表所示。

    启动设备

    TP限制

    不具备动作组

    具备动作组

    MF[1]~MF[99]

    SU[1]~SU[7]

    有效

    可以执行

    可以执行

    UK[1]~UK[7]

    可以执行

    不可以执行

    SP[4]~SP[5]

    DI[1]~DI[32766]

    RI[1]~RI[32766]

    UI[7]

    F[1]~F[32766]

    M[1]~M[32766]

    无效

    可以执行

    可以执行

    宏指令执行操作

    宏指令根据分配的启动设备的不同,启动执行的操作方式也不同,以上述设置的MF[1]设备为例,首先在机器人示教器的操作面板上按“MENU”键,在弹出的菜单中依次选择“3 手动操作”→“手动操作 1”→“2 宏”。

    在手动操作画面中选择要启动执行的宏指令(如Macro1),然后按住“SHIFT”键再按“执行”,宏指令即被启动,相应的宏程序激活执行,执行过程中需要一直按住“SHIFT”键。

    对于被分配了UK、SU启动设备的宏指令,使用机器人示教器的用户按键就可以直接启动执行;对于被分配了I/O信号启动设备的宏指令,可以在接收到相应的信号后自动被启动执行。

    The End


    上一篇:FANUC机器人示教编程:原始路径恢复功能介绍与使用方法

    展开全文
  • SAS创建宏变量的七种方法

    千次阅读 2019-09-13 09:34:21
    学会创建宏变量,特别是全局变量是应用的一基础,下面我们介绍一下,创建宏变量的七种方法,并通过例子来演示。 1.通过函数创建宏变量。 %let dsid=%sysfunc(open(sashelp.class)); %let nvars=%...

    学会创建宏变量,特别是全局宏变量是应用宏的一个基础,下面我们介绍一下,创建宏变量的七种方法,并通过例子来演示。

    1.通过宏函数创建宏变量。

    %let dsid=%sysfunc(open(sashelp.class));
    %let nvars=%sysfunc(attrn(&dsid,nvars));
    %let dsid=%sysfunc(attrn(&dsid,nobs));
    %let dsid=%sysfunc(close(&dsid));
    %put &nvars.;
    %put &nobs.;



    程序解读:上边演示了如何使用统配宏函数和其他的SAS函数结合产生需要的结果。

    2.通过SQL过程用变量值创建一个宏变量。

    proc sql noprint;
       select distinct sex
       into :list_a separated by ' '
       from sashelp.class;
    quit;
    %put &list_a.;



    程序解读:程序把变量sex的所有值distinct之后赋值给一个宏变量list_a。另外,上面的程序又用到了创建宏变量的一个关键字SEPARATED BY,该关键字可以对同一个宏变量用BY后面的单引号(或双引号)里面的符号隔开,如空格符号,逗号等。

    3.通过SQL过程创建多个宏变量

    proc sql noprint;
       select nvar,nobs
       into :nvar, :nobs
       from dictionary.tables
       where libname = 'SASHELP' and memname = 'CLASS';
    /*注意:此处的SASHELP和CLASS必须要大写*/
    quit;
    %put &nvar.;
    %put &nobs.;



    程序解读:通过SQL过程获取宏变量是最常用的方法之一。上面程序讲解的是如何从数据字典里面获取逻辑库Sashelp的数据集CLASS。另外,由于这里需要创建两个宏变量,所以宏变量nvar和nobs之间用逗号隔开。

    4.通过CONTENTS和SQL过程用变量名创建宏变量。

    proc contents data=sashelp.class out=con_class;
    run;
    proc sql noprint;
       select name,put(count(name),5.-l)
       into :clist separated by ' ', :charct
       from con_class
       where type=2;;
    quit;
    %put &clist.;
    %put &charct.;



    程序解读:CONTENTS过程可以产生一个数据集的头文件,包含了多种该数据集的信息,查看输出数据集con_class内容,其中type=2表示字符型变量。

    5.通过SQL过程用变量名创建宏变量列表。

    proc sql noprint;
       selecct name
       into :clist1-:clist999
       from dictionary.columns
       where libname = 'SASHELP' and memname = 'CLASS';
    quit;
    %put &clist1.;
    %put &clist2.;



    程序解读:这段程序不同于上面的的4程序,这段程序是把所有的name值一一对应地赋值给不同的宏变量,宏变量列表可以用“-:”隔开。

    6.通过SQL过程用变量值创建宏变量列表

    proc sql noprint;
       select count(distinct sex)
       into :n
       from sashelp.class;
       select distinct sex
       into :type1 - :type%left(&n)
       from sashelp.class;
    quit;
    %put &n.;
    %put &type1.;



    程序解读:该程序首先创建一个用于计算变量值经过distinct之后的数值宏变量n,然后作为第二个宏变量列表的列表数的引用宏变量。

    7.通过DATA步接口子程序CALL SYMPUTX。

    data _null_;
       set sashelp.class nobs=obs;
       call symputx('m1',obs);
       call symput('m2',obs);
       Stop;
    run;
    %put &m1.;
    %put &m2.;



    程序解读:DATA步可以通过接口程序SYMPUTX和SYMPUT来创建全局宏变量。但是SYMPUTX和SYMPUT之间有一定的区别:SYMPUTX能消除后面参数的左右空格,而SYMPUT只能消除右空格,可以测试一下两者的区别,请看下边的代码:

    data test&m1.;
       x=1;
    run;
    
    data test&m2.;
       x=1;
    run;



    程序解读:程序运行结果test&m2.会报错,查看日志会发现在&m2.解析后左边有很多空格,造成本来希望test1作为数据集的名字,但实际上没有达到效果。而test&m1.可以满足需求。














    转载于:https://my.oschina.net/dataRunner/blog/626262

    展开全文
  • [Office] WPS Excel通过添加实现多张表格合并

    万次阅读 多人点赞 2018-03-06 14:20:15
    在我们使用Excel时,...本文主要介绍WPS Excel,讲述种自动汇总表格数据的方法,通过VB代码实现。一、合并当前文件夹下所有文件表格假设存在如下贵州省九市州的数据,如下图所示:打开每表格的格式都一样...
  • 【C语言】----定义,预处理

    千次阅读 多人点赞 2019-09-26 21:55:28
    什么是是学习任何语言所不可缺少的,优秀的定义可以使得代码变得很简洁且高效,有效地提高编程效率。 是一种预处理指令,它提供了一种机制,可以用来替换源代码中的字符串,解释器或编译器在遇到宏时会...
  • 文件下载_EPLAN~资源获取

    千次阅读 2020-11-21 07:52:55
    但是这个宏我们最开始画的时候是很麻烦很费时的,而且往往画的也比较简单,显得不那么专业;对电气行业来说,国产与进口绝不仅仅是质量上的差别,差的是专业性,服务意识以及整个行业的规范标准;就说EPLAN这个宏,...
  • 使用定义对字符串进行处理#pragma

    千次阅读 2017-11-24 20:23:28
    定义的使用中有一字符串化运算符即 “#”运算符,出现在定义之后的“#”运算符会把跟在其后得到参数转化为一字符串,优势也称这种用法的“#”称之为字符串化 运算符。举例如下:#include #define PASTE(n...
  • Access学习总结

    万次阅读 2017-03-20 18:00:13
    详细了解access中的 什么是  到底什么是呢? 我们把那些能自动执行某种操作的命令统称为“”。... 也是一种操作命令,它...菜单命令必须由使用者来施加这操作,而命令则可以在数据库 中自动执
  • 病毒的研究与实例分析01——基础篇

    千次阅读 多人点赞 2019-03-10 19:45:02
    文章目录前言基础知识病毒VB基础sub与functionVB基本函数对象病毒实例分析实例1oledump.py病毒的分析技巧自动执行隐秘执行调用外部例程和命令执行字符串隐写Chr()函数Replace()函数CallByname 函数...
  • 任务和微任务的详解

    千次阅读 2021-06-10 14:07:38
    微任务可以在实时性和效率之间做一有效的权衡。 从目前的情况来看,微任务已经被广泛地应用,基于微任务的技术有 MutationObserver、Promise 以及以 Promise 为基础开发出来的很多其他的技术。所以微任务的重要性...
  • 一 预处理: C语言是建立在适当的关键字,表达式,语句以及使用它的规则上。然而 ,C标准不仅描述C语言,还...预处理器可以包含程序所需要的其他文件,可以选择让编译器查看那些代码。预处理器并不知道 C 。基本上...
  • 定义详解

    万次阅读 多人点赞 2017-08-29 15:32:09
    定义的黑魔法 - 菜鸟起飞手册 定义在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译优化和方便,以及跨平台能力,被大量使用,可以说底层...如果想成为一能写出漂亮优雅代码的开发者,
  • 病毒学习总结

    千次阅读 2017-04-03 09:10:40
    病毒及其防治方法总结 http://www.educity.cn/labs/563436.html  如果说病毒的出现曾经给反病毒软件厂商出了一道难题的话,那么电脑网络特别是因特网的出现在给人们的信息 交流带来极大方便的同时,也给...
  • SAS入门 (二)--

    万次阅读 多人点赞 2018-03-30 10:58:16
    当用户在某个SAS程序中使用宏功能时,这个宏功能产生所需要的SAS语句和命名,SAS系统的其余部份接受这些语句和命令。 获取SAS的系统信息。SAS在启动时就创建了一些自动宏变量,用以存储当前SAS进程启动的日期,...
  • Rust 中的

    千次阅读 2021-04-25 10:52:05
    (macro) 是 Rust 中的一种高级特性,Rust 中的分为种: 声明性(declarative macros) 程序(procedural macros) Custom #[derive] macros Attribute-like macros Function-like macros 与函数的...
  • Q_OBJECT的作用

    千次阅读 2017-09-21 17:55:09
    例如,下面定义了两个对象:标签对象 label 和滚动条对象 scroll,并将 valueChanged() 信号与标签对象的 setNum() 相关联,另外信号还携带了一个整形参数,这样标签总是显示滚动条所处位置的值。 QLabel *label ...
  • 一、多目标工程 多目标工程也就是说在一个工程里面创建多个target。...存在两个target STM32F103R8_Low和STM32F103ZE_High,每个target包含文件是一样的,因为是同一个工程。 比如:STM32F103R8_L...
  • 是一变量,由如下特殊语法标识: {MACRO} 根据在上下文中, 解析为一特殊的值。有效地使用可以节省时间,并使Zabbix变地更加高效。 在一的典型用途中,可以用于模板中。因此,模板的触发器可能...
  • ROS笔记(27) 机械臂的组装

    万次阅读 2019-08-24 09:33:52
    机械臂模型、声明模型的创建机械臂模型、加入Gazebo属性、显示机械臂模型
  • 预处理器定义

    千次阅读 2018-08-25 07:50:56
    预处理器定义 (C/C++) 预处理在非预处理指令的所有行(即第一非空白字符不是 # 的行)中展开宏,并在指令的某些部分(没有作为条件编译的一部分跳过)中展开宏。利用“条件编译”指令,您可以通过测试一...
  • 手把手教你如何使用SV

    千次阅读 多人点赞 2020-10-10 18:49:15
    前 言 本文主要给大家介绍SV,谈到SV大家应该不会感到陌生,因为大家在做前端设计或验证的时候会用到`define定义,进行条件编译,或者使用宏来定义参数等,做前端...
  • js异步之任务(marcroTask)和微任务(microTask)

    千次阅读 多人点赞 2020-10-06 18:03:48
    但是,JS异步还有一个机制,就是遇到任务,先执行任务,将任务放入任务队列(event queue),然后再执行微任务,将微任务放入微任务队列(micro task queue),但是,这两个queue不是一个queue。当你往外拿的...
  • 再谈C语言定义

    千次阅读 2020-05-17 23:47:56
    再谈C语言宏定义 文章目录再谈C语言宏定义简单的宏定义带参数宏定义宏定义中的#和##运算符#运算符##运算符删除宏定义常用预定义宏 简单的宏定义 简单宏定义格式 [关键字] [标识符] ...当预处理器遇到第一个宏定义
  • C语言中的定义

    千次阅读 2013-05-24 11:10:39
    1. 简单宏定义 简单的宏定义有如下格式: ...当预处理器遇到一个宏定义时,会做一个 “标识符”代表“替换列表”的记录。在文件后面的内容中,不管标识符在任何位置出现,预处理器都会用替换列表代替它。
  • 的使用

    千次阅读 2016-06-14 15:02:49
    ABAP中宏的使用不多,基本用于简单的代码复用,在SAP报表开发中可用于Filedcat和Layout的创建。一、的定义与调用 语法:DEFINE NAME. "NAME为的名,自己定义" <STATEMENTS> . "代码段,一般是计算公式或赋值" ...
  • C语言的总结

    万次阅读 2016-04-26 21:50:52
    1. 简单宏定义 简单的宏定义有如下格式: ...当预处理器遇到一个宏定义时,会做一个 “标识符”代表“替换列表”的记录。在文件后面的内容中,不管标识符在任何位置出现,预处理器都会用替换列表代替它。
  • CorelDRAW VBA - 创建和使用命令

    千次阅读 2018-01-20 01:25:18
    目的 本文介绍CorelDRAW VBA命令的...如果需要,一命令甚至可以包含上百命令。 创建命令可以使你编写的程序看起来完全集成到应用程序中。 下面代码演示了命令的基本使用方法: Dim sh As Shape ...
  • ACCESS中两个特殊的

    千次阅读 2008-10-15 18:26:00
    一.创建AutoExec宏 如果在首次打开数据库时执行指定的操作,可以使用一个名为 AutoExec 的特殊宏。...创建AutoExec宏的方法如下: 1)创建个宏,其中包含在打开数据库时要运行的操作。 2)以Au
  • C/C++ 定义

    千次阅读 2013-07-16 11:24:37
    简单定义带参数的宏运算符运算符的通用属性定义中圆括号创建较长的 较长的宏中的逗号运算符定义中的do-while循环do 空操作的定义 预定义宏C语言中常用的 1. 简单定义 简单的定义有如下...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 124,082
精华内容 49,632
关键字:

创建包含两个字宏的宏组