首页
学习
活动
专区
圈层
工具
发布

Java中的宏变量,宏替换详解。

群友在微信群讨论的一个话题,有点意思,特拿出来分享一下。 输出true false 来看下面这段程序,和群友分享的大致一样。...首先来理解下宏变量: Java中,一个用final定义的变量,不管它是类型的变量,只要用final定义了并同时指定了初始值,并且这个初始值是在编译时就被确定下来的,那么这个final变量就是一个宏变量。...编译器会把程序所有用到该变量的地方直接替换成该变量的值,也就是说编译器能对宏变量进行宏替换。...final String a = "hello"; final String b = a; final String c = getHello(); a在编译期间就能确定下来,而b、c不行,所以a是宏变量...所以,再回到上面的程序,finalWorld2和finalWorld4是final定义的,也是在编译期间能确定下来的,所以它能被宏替换,编译器就会让finalWorld2和finalWorld4指向字符串池中缓存的字符串

4.3K50

C语言有参数宏定义与无参数宏定义

无参数的宏没什么好说的,但还是有些地方使用时要注意。 几点注意: 1. 在宏定义的#之前可以有若干个空格、制表符,但不允许有其它字符。...宏定义的有效范围称为宏定义名的辖域(也可以叫做生命周期,类似于变量的生命周期),辖域从宏定义的定义结束处开始到其所在的源程序文件末尾。宏定义名的辖域不受分程序结构的影响。...在新的宏定义中,可以使用前面已定义的宏名,示例: # define R 2.5 # define PI 3.1415926 # define Circle 2*PI*R # define Area PI...宏进行定义时不会考虑参数的类型。        3. 参数宏的使用会使具有同一作用的代码块在目标文件中存在多个副本,即会增长目标文件的大小。        4....宏中”#”和”##”的用法        一般用法: 1.使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起,看下面的示例: #include #include<climits

3.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Confluence 6.15 附件宏参数

    参数 参数名称 默认值 描述 Filename Patterns (patterns) all Attachment Labels (labels) (None) 标签(labels)的列表,用来过滤附件的显示...如果你希望输入多个标签的话,请使用逗号分隔符来分隔需要使用的标签。Confluence 将会仅显示附件,这个附件具有所有(all)标记的标签。匹配条件是是 AND 而不是 OR。...可以进行排序的变量有: 日期(date) – 对日期进行排序(最新的排在前面) 大小(size)– 按照从大到小的顺序进行排序 名字(name)– 按照字符顺序进行排序...创建日期(created date) - 按照创建日期的倒序进行排序(最新的排在前面) Sort Order (sortOrder) ascending 使用组合的排序( Sort By ...(最新的排在前面) Sort Order (sortOrder) ascending 使用组合的排序( Sort By )参数进行排序,来对附件按照升序或者降序进行排序。

    64210

    C语言宏定义(#define定义常量​、#define定义宏​、 带有副作用的宏参数、 宏替换的规则、 宏函数的对比)

    Microsoft Word中对宏定义为:“宏就是能组织到一起作为一独立的命令使用的一系列word命令,它能使日常工作变得更容易”。...#define DOUBLE( x) ( ( x ) + ( x ) ) 提示: 所以用于对数值表达式进行求值的宏定义都应该用这种方式加上括号,避免在使用宏时由于参数中的操作符或邻近操作符之间不可预料的相互作用...0; } 五、带有副作用的宏参数​ 当宏参数在宏的定义中出现超过一次的时候,如果参数带有副作用,那么你在使用这个宏的时候就可能出现危险,导致不可预测的后果。...每次使用宏的时候,一份宏定义的代码将插入到程序中。除非宏比较短,否则可能大幅度增加程序的长度。 2. 宏是没法调试的。 3. 宏由于类型无关,也就不够严谨。 4....//使用​ MALLOC(10, int);//类型作为参数​ //预处理器替换之后:​ (int )malloc(10 sizeof(int)); 宏和函数的一个对比 今天就先到这了

    2.6K10

    Confluence 6.15 附件宏参数

    参数 参数名称 默认值 描述 Filename Patterns(patterns) all Attachment Labels(labels) (None) 标签(labels)的列表,用来过滤附件的显示...如果你希望输入多个标签的话,请使用逗号分隔符来分隔需要使用的标签。Confluence 将会仅显示附件,这个附件具有所有(all)标记的标签。匹配条件是是 AND 而不是 OR。...可以进行排序的变量有:日期(date) – 对日期进行排序(最新的排在前面)大小(size)– 按照从大到小的顺序进行排序名字(name)– 按照字符顺序进行排序创建日期(created date) -...按照创建日期的倒序进行排序(最新的排在前面) Sort Order(sortOrder) ascending 使用组合的排序( Sort By )参数进行排序,来对附件按照升序或者降序进行排序。...(最新的排在前面) Sort Order (sortOrder) ascending使用组合的排序( Sort By )参数进行排序,来对附件按照升序或者降序进行排序。

    58930

    c语言之带参数的宏定义

    1.带参数的宏定义中,宏名和新参表之间不能有空格, 2.在带参数的宏定义中,形参参数不分配内存单元,因此不必作类型定义。而宏调用中的实参有具体值,要用它去代换形参,因此必须作类型说明。...2; y = 3; max = MAX(x,y); printf("%d\n", max); system("pause"); return 0; } 3.在宏定义中的形参是标识符...4.在宏定义中,字符串内的形参通常要用括号括起来以避免出错。 5.带参的宏和代餐函数类似,但本质不同,除此之外,把同一表达式用函数处理和用宏处理两者的结果有可能不同。...这是因为普通函数调用时,实参传给形参的是值,而在宏定义时,要用表达式进行替换,即(i++)*(i++),所以I++会被执行两次。...6.宏定义也可以用来定义多个语句,在宏调用时,把这些语句又代换到源程序内。

    2.8K20

    bash 的变量和参数

    VARIABLE =value # 脚本将会尝试运行带参数 "=value" 的 "VARIABLE " 命令。...本地变量的作用域为当前脚本。有一个子类,局部变量,作用域是当前代码块,比如函数中的变量。 位置变量 其实就是我们说的参数了,也是特殊变量的一种,因为常用,单独拿出。...echo "${10}" 特殊变量 变量 含义 $$ 表示当前 Shell 进程的 ID ,即 pid $n 上述位置变量 $# 传递给脚本或函数的参数个数 $* 传递给脚本或函数的所有参数 $@ 传递给脚本或函数的所有参数...; # 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数 echo "$@"; # 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数 退出与退出状态 请查看退出与退出状态...Introduction to Variables and Parameters 变量与参数

    1.4K30

    bash 的变量和参数

    VARIABLE =value # 脚本将会尝试运行带参数 "=value" 的 "VARIABLE " 命令。...本地变量的作用域为当前脚本。有一个子类,局部变量,作用域是当前代码块,比如函数中的变量。 位置变量 其实就是我们说的参数了,也是特殊变量的一种,因为常用,单独拿出。...echo "${10}" 特殊变量 变量 含义 $$ 表示当前 Shell 进程的 ID ,即 pid $n 上述位置变量 $# 传递给脚本或函数的参数个数 $* 传递给脚本或函数的所有参数 $@ 传递给脚本或函数的所有参数...; # 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数 echo "$@"; # 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数 退出与退出状态 请查看退出与退出状态...Introduction to Variables and Parameters 变量与参数

    1.7K00

    Excel宏教程 (宏的介绍与基本使用)

    大家好,又见面了,我是你们的朋友全栈君。 Excel宏教程 (宏的介绍与基本使用) Microsoft excel是一款功能非常强大的电子表格软件。...随着支持Windows的应用程序的不断增多和功能的不断增强,越来越多的程序增加了宏处理来方便用户的自由扩展。但初期各应用程序所采用的宏语言并不统一,这样用户每使用一种应用程序时都得重新学习一种宏语言。...对录制宏进行修改不仅可以学习宏的使用,还能大大简化宏的编写。 二)、基本概念 为了学习excel中的宏,我们需要先了解以下一些基本概念。...三)、处理单元格 1、直接赋值与引用 将变量、常量值直接赋给单元格、或将单元格的值直接赋给变量、常量,这是在excel中最简单的单元格赋值及引用方法。...(1,1)  Cells(1,2).Select ‘选定B1单元格,使其成为当前单元格 ActiveCell=I+1 ‘以I+1为当前单元格赋值 2、用公式赋值 在宏的使用中,可能会更多地用公式来给单元格赋值

    8.4K10

    宏函数使用的陷阱

    在嵌入式软件设计中,有工程师经常会定义一些宏函数,宏函数的使用虽然可以减少开销,但是宏函数的使用一定要小心,例如我们定义一个求取两个数中的较大者的宏函数来做试验。在调用的地方打断点观察值。...通过仿真可以看到a的值累加了两次,如果a在用作其他用途,那么累加两次显然不是我们要的。 通过仿真可以看到累加了一次。 对于宏函数可以改为内联函数代替。所以提醒大家在使用宏函数的时候要小心。...在程序设计中可以尽量考虑使用const,enum,inline等代替#define,当然并不是说不使用#define,在预编译控制中还是要使用,在遇到什么问题的时候最好自己动手去做试验,分析。...不要只是停留在别人的人云亦云上,有可能别人说的错误给你带来误解。你们在使用过程中有遇到过什么问题也欢迎给我们投稿讨论。

    1.1K90

    变参函数和可变参数宏

    在 print_num 函数中,先获取 count 参数地址,然后使用 &count + 1 就可以获取下一个参数的指针地址,使用指针变量 args 保存这个地址,并依次访问下一个地址,就可以直接打印传进来的各个实参值了...61.什么是可变参数宏 在上面的教程中,我们学会了变参函数的定义和使用,基本套路就是使用 va_list 、 va_start 、 va_end 等宏,去解析那些可变参数列表我们找到这些参数的存储地址后...使用宏连接符 ##要注意一下两条结论: 第一条:任何使用到胶水运算“##”对形参进行粘合的参数宏,一定需要额外的再套一层 第二条:其余情况下,如果要用到胶水运算,一定要在内部借助参数宏来完成粘合过程 为了理解这一...由于这里定义了一个变量wTemp,而如果用户插入的代码中也使用了同名的变量,就会产生很多问题:轻则编译错误(重复定义);重则出现局部变量wTemp强行取代了用户自定义的静态变量的情况,从而直接导致系统运行出现随机性的故障...,我们都可以使用同一个参数宏CONNECT(),而CONNCT() 会自动计算用户给出参数的个数,从而正确的替换为CONNETn()版本。

    2.4K20

    PXC状态参数与变量参数

    这个命令的作用就是让当前节点变为primary,如果执行了,则说明确定要使用这个节点来提供服务了; 2、变量参数: --wsrep_provider_options: ---cert.log_conflicts...-gcache.mem_size:不建议使用!...所以只要物理文件出现,就说明GCache不够用了; ---gcache.size:不建议使用!...如果小于这个长度,则FC解除; ---gcs.fc_master_slave : 这个参数与上面两个参数是相关的,如果设置为yes,表示当前集群的使用方式为主从模式,也就是单点写入的模式,其他节点都是从节点...,是全程强势有序的,并且在使用到被修改的表时,都会将其杀死,这是默认的情况,并且是最简单的方法,也推荐使用这种方法;

    1.7K20

    zabbix3.4新功能--使用宏变量来管理时间段

    zabbix3.4新功能(二) 使用宏变量来管理时间段 ?...前言 宏变量在zabbix系统中被广泛使用,在zabbix 3.4中宏变量又有哪些新增场景可以使用: 1、 历史数据与趋势数据保存间隔时间 2、 item更新间隔时间与存储时间 3、 Low-Level...宏变量的格式:{$MACRO} Zabbix哪些地方可以使用宏变量,参考官方文档 PS:在Zabbix 3.4版本中支持时间后缀,如下: s – 秒 m – 分钟 h – 小时 d – 天 w...应用在Actions中 Marco变量还可以使用在Actions的操作中,配置全局宏同样可以使用在Actions的操作轮询时间中: ? 应用在告警媒介中 宏变量在告警媒介中的使用: ?...结束语 在3.4版本的新功能中,使用好宏变量可以让你更好的管理zabbix,当你的系统需要经常微调的使用,可以使用用户宏的功能。

    1.2K20
    领券