1 概述 在工程规模较小,不是很复杂,与硬件结合紧密,要求移植性的时候,可采用宏定义简化编程,增强程序可读性。 当宏作为常量使用时,C程序员习惯在名字中只使用大写字母。...但是并没有如何将用于其他目的的宏大写的统一做法。由于宏(特别是带参数的宏)可能是程序中错误的来源,所以一些程序员更喜欢使用大写字母来引起注意。...在写代码或DEBUG时通常需要将一些重要参数打印出来,但在软件发行的时候不希望有这些打印,这时就用到可变参数宏了。...宏名采用大写字符组成的单词或其缩写序列,并在各单词之间使用“_”分隔。 如果需要公布某个宏,那么该宏定义应当放置在头文件中,否则放置在实现文件(.cpp)的顶部。...尽量避免在局部范围内(如函数内、类型定义内等)定义宏,除非它只在该局部范围内使用,否则会损害程序的清晰性。
但只有删除超过1行时才会影响寄存器1至9,行内的删除内容则会被存入寄存器-(减号)。 如果用q命令录制宏时不涉及跨行删除,可以在宏中直接使用这9个寄存器来暂存文本。...(结合前面第5点,你也许注意到了,在指定范围时,使用跳转命令将指定一个从光标位置到跳转目标的区域) 12 书签 在普通模式下按 m 即可定义书签,按 ` 则可跳转到某个书签的精确位置...最常用的自然是mm, mn, mj, mk, ml这几个顺手的键位。 真正的vim中的全局书签 m大写字母> 在目前IdeaVim版本中不生效。...真正Vim中的 %V 标志在IdeaVim中不生效。 11 代码折叠 zo - 打开折叠 zc - 关闭折叠 14 宏定义 在IdeaVim中定义宏比Idea自带的宏功能要轻量许多。...需要注意的是宏和复制粘贴共用一套寄存器,因此在录制宏时就注意不要把当前宏正在使用的寄存器用来复制了。 寄存器内容是自动保存的,重启Idea仍然生效。但IdeaVim没有导出宏独立保存的功能。
这类命令常用的有:d – 删除一定范围内的文本c – 删除一定范围内的文本并进入插入模式y – 将范围内的文本放入0号和”号注册栏v – 选择范围内的文本= – 自动缩进范围内的文本gU – 将范围内的字符转换为大写...但只有删除超过1行时才会影响寄存器1至9,行内的删除内容则会被存入寄存器-(减号)。如果用q命令录制宏时不涉及跨行删除,可以在宏中直接使用这9个寄存器来暂存文本。...(结合前面第5点,你也许注意到了,在指定范围时,使用跳转命令将指定一个从光标位置到跳转目标的区域)12 书签在普通模式下按 m 即可定义书签,按 ` 则可跳转到某个书签的精确位置,按 ‘可跳转到某个书签所在行的行首...真正Vim中的 \%V 标志在IdeaVim中不生效。11 代码折叠zo – 打开折叠zc – 关闭折叠14 宏定义在IdeaVim中定义宏比Idea自带的宏功能要轻量许多。...需要注意的是宏和复制粘贴共用一套寄存器,因此在录制宏时就注意不要把当前宏正在使用的寄存器用来复制了。寄存器内容是自动保存的,重启Idea仍然生效。但IdeaVim没有导出宏独立保存的功能。
跟着肯哥(不是我)学格式化输入输出 C语言格式化输入 在C语言中,格式化输入(Formatted Input)是一种从标准输入读取数据并按照指定格式进行解析的操作,它主要通过使用标准库函数scanf(...格式化输入规则 这没什么好说的,搬运自讲义 scanf()函数使用格式控制字符串来指定输入的格式,包括要读取的数据类型和数据的排列方式。...这就要求我们在使用格式化输入时,需要保证输入数据符合指定的格式,或者进行错误处理以防止程序崩溃或产生未定义的行为。...在C语言中,使用标准库函数stdarg.h中的一组宏来支持变参函数的实现。主要的宏有以下三个: va_list:变量类型,用于存储可变参数列表。 va_start:宏,用于初始化可变参数列表。...va_arg:宏,用于访问可变参数列表中的参数。 va_end:宏,用于结束变参的处理。
八、字符串左对齐ljust() ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。...九、字符串右对齐ljust() rjust() 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。...十二、find() 检测字符串中是否包含指定字符串 find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值...,返回的是索引值在字符串中的起始位置。...十四、count() 统计字符串里某个字符出现的次数 count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
使用宏定义的优点: 可提高源程序的可维护性; 可提高源程序的可移植性; 减少源程序中重复书写字符串的工作量。 关于宏定义几点说明: 宏名一般用大写字母表示,以示与变量区别。但这并非是语法规定。...在进行宏定义时,可以引用已定义的宏名。...文件包含的语法格式: 首先在源码当前目录下面寻找该头文件,此方法通常用于包含自己定义的头文件。...2.一个文件包含命令只能指定一个被包含文件,如果要包含多个文件,则应使用多个文件包含命令。...条件编译 如果希望程序中的一部分只在满足一定条件时才进行编译,也就是对这部分内容指定编译的条件,可以使用条件编译实现。
八、字符串左对齐ljust() ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。...九、字符串右对齐ljust() rjust() 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。...十二、find() 检测字符串中是否包含指定字符串 find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值...,返回的是索引值在字符串中的起始位置。...如果不包含索引值,返回-1。 str.endswith(str, beg=0,end=len(string)) #str -- 指定检索的字符串 #beg -- 开始索引,默认为0。
就会吧1900个文件链接起来当一个整体使用 该库是一个固件软件包,其中包含例程,数据结构和宏的集合,这些例程,数据结构和宏涵盖了STM8S / A外设的功能。...MISRA-C 2004在关键系统中使用C语言的准则,汽车工业软件可靠性协会 大家平时不在意这个相关的标准,其实是个误区 这种标准是强制的,硬性的,是性能的底线。...在大多数情况下,使用与产品参考手册文档中相同的首字母缩写词。 外围功能的名称之前带有相应的外围首字母缩写词,大写字母后跟一个下划线。每个单词中的第一个字母均为大写,例如SPI_SendData。...用于将PPP外设寄存器重置为其默认值的函数称为PPP_DeInit,例如TIM2_DeInit。 用于启用或禁用指定的PPP外设的函数名为PPP_Cmd,例如SPI_Cmd。...用于启用或禁用指定PPP外设的中断源的函数称为PPP_ITConfig,例如SPI_ITConfig。
但只有删除超过1行时才会影响寄存器1至9,行内的删除内容则会被存入寄存器-(减号)。如果用q命令录制宏时不涉及跨行删除,可以在宏中直接使用这9个寄存器来暂存文本。...用n或N在匹配间切换。 (结合前面第5点,你也许注意到了,在指定范围时,使用跳转命令将指定一个从光标位置到跳转目标的区域) 这里补充一部分文章《vim的跳转与回跳》的内容: vim的跳转 1....最常用的自然是mm, mn, mj, mk, ml这几个顺手的键位。 真正的vim中的全局书签m大写字母>在目前IdeaVim版本中不生效。...真正Vim中的\%V标志在IdeaVim中不生效。 11代码折叠 zo -打开折叠 zc -关闭折叠 14宏定义 在IdeaVim中定义宏比Idea自带的宏功能要轻量许多。...右手区的hjklnm键用来保存一些临时宏。yuiop五个寄存器保留用来复制粘贴。如果录制的宏不涉及删除大段代码,寄存器1至9也可以用来进行复制粘贴。 执行一次宏后,可以用@@命令重复上一次执行的宏。
SpaceSeparator = 11, // // 摘要: // 用于分隔文本各行的字符。...代理项代码值在 U+D800 到 U+DFFF 的范围内。 由 Unicode 代码“Cs”(其他,代理项)表示。 值为 16。...OtherNotAssigned = 29 } 该方法有两种传参方式,如下: // // 摘要: // 将指定字符串中位于指定位置的字符分类到由一个...如果目标字符串不是数字返回-1; 6、字符转换数值其他的方法 (1)、强制类型转换 将Char转换成数值例如int32最简单的方法就是转型.这是三种方法中效率最高的,因为编译器会生成中间语言(IL)指令来执行转换...,而且不必调用方法.且C#允许指定转换时使用checked还是unchecked代码,C# checked和unchecked详解 (2)、使用Convert类型 System.Convert类型提供的几个静态方法来实现
强制等待,顾名思义就是强迫你等待呗,你等也得等不等也得等,没有商量。不管页面是否加载完,强制指定等待时间后继续执行。不建议用这种方式。...类里提供了休眠方法sleep,导入包后就能使用 sleep()方法以毫秒为单位 只要在case中加入sleep就会强制等待设置的时间后才会执行之后的命令,这种等待一般适用于调试脚本的时候。...3.2隐式等待(ImplicitlyWait) implicitlyWait()方法比sleep()方法智能,sleep()方法只能在一个固定的时间等待,而implicitlyWait()可以在一个时间范围内等待...隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。...显式等待通常是自定义的一段代码,用来等待某个条件发生后再继续执行后续代码。此种方式用于特定元素、特定条件的等待,使用灵活,建议使用这种方法来进行等待设置。
例如:/************ 禁止过程或函数中的参数表为空**********/void satic_p ( ){/*...*/}1.11 禁止在同一个宏中使用多个#或在同一个宏中使用多于一个的#或...##,或同时使用#和##都是很危险的,因此禁止在同一个宏中使用多个#或##。...test; }}1.13 禁止在宏中包含不允许的项宏只能用于符号常量,类函数宏,类型限定符以及存储类说明。宏中不允许含有语句关键字和类型关键字。...8.1 禁止单独使用小写字母“1”或大写字母“0”作为变量名小写字母“1”很容易与数字“1”混浠,大写字母“O”很容易与数字“0”混淆,因此禁止单独使用小写字母“1”或大写字母“O”作为变量名。...f的循环变量应该定义在最小的范围内,即循环变量的作用域应最小,所以循环变量必须是局部声明的。
这些规定是由编译系统规定的,由于不是C语言本身的组成部分,因此不能直接编译,而要经过编译器预处理再与源程序进行编译 书写规则:#+关键字(一行书写一个) 宏定义 用一个指定的标识符(名字)来代表一个字符串...标识符又称为宏名,通常用大写字母来表示,字符串称为宏体,一般是常数、关键词、语句、表达式等,也可以是空白,末尾不用分号。...带参数的宏定义 \#define 标识符(形参表) 字符串 其中字符串包含形参参数,一般为表达式,也可以包括宏名和函数。使用带参宏时候,一定要注意要用实参替换形参。...:限定宏定义的作用域在某一个范围内,可以用\#undef 命令来解除已有的宏定义 格式:#undef 宏名 \#define MAX 100 ......\#undef MAX 使得MAX在undef之前有效,之后便不再有效 重新宏定义 undef的另一个作用是重新进行宏定义,C语言中宏不能重复定义,即程序中不能使用同名的宏。
GROUP BY StreamField将流字段为NULL的记录数量减少为一条记录。 GROUP BY子句可以使用箭头语法(- >)操作符在非基表的表中指定字段。...GROUP BY根据字段的大写字母排序规则,使用SQLUPPER排序规则对字段的值进行分组。 只有字母大小写不同的字段值被分组在一起。 分组字段值全部以大写字母返回。...这样做的好处是将每个字母变体作为一个单独的组返回。 它的性能缺点是不能使用字段的索引。 可以使用管理门户在系统范围内为包含GROUP BY子句的所有查询配置此行为。...此默认设置按字母值的大写排序规则对字母值进行分组。(此优化也适用于DISTINCT子句。)。 也可以使用$SYSTEM.SQL.Util.SetOption()方法快速区分选项在系统范围内设置此选项。...它对存储在索引中的字段值进行排序;字母字符串以全部大写字母返回。可以设置此系统范围的选项,然后使用%exact排序规则函数为特定查询覆盖它以保留字母大小写。 以下示例显示了这些行为。
本文作为svlib使用库的附加信息。本文件允许无限复制,但必须包括第一章的全部内容,不得修改。 1.3.1 责任限制 Verilab公司对该软件包的运行不承担任何责任。...这些操作只是专用的字符串函数,并不能对文件系统进行任何读写。 第八章介绍了用于查询文件系统的svlib工具。...4.1.2 marco 除了包之外,svlib还有一些在使用包特性时有用或必要的宏。...为了使这些宏定义社工小,用户应该在代码中添加: `include "svlib_macros.svh" 代码应该添加在最外层($unit)范围内,在任何模块或包之外。...这样做是为了让包能够保持DPI的C端和SystemVerilog端数据的一致性。但是,SystemVerilog没有提供任何方法在语言中实现强制隐藏。
其一般形式为: (数据类型) (表达式) 其作用是把表达式的运算结果强制转换成类型说明符所表示的类型 在使用强制转换时应注意以下问题: 数据类型和表达式都必须加括号, 如把(int)(x/2+y)写成...转换后不会改变原数据的类型及变量值,只在本次运算中临时性转换。 强制转换后的运算结果不遵循四舍五入原则。...p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p, p1) 查找字符串 strlwr§将大写字母全部换为小写字母...若a不是素数则在2到sqrt(a)的范围内一定存在其因数。...,编译出错,但可以使用强制类型转换。
BETWEEN谓词 BETWEEN比较操作符允许选择语法BETWEEN lowval和highval指定范围内的数据值。 这个范围包括lowval和highval本身的值。...BETWEEN使用与它所匹配的列相同的排序规则类型。 默认情况下,字符串数据类型排序不区分大小写。 IN和%INLIST谓词 IN谓词用于将一个值匹配到非结构化的一系列项。...默认情况下,与字段字符串值的比较不区分大小写。 %INLIST谓词是IRIS扩展,用于将值匹配到 IRIS列表结构的元素。...NULL谓词的语法如下: WHERE field IS [NOT] NULL NULL谓词条件是可以在WHERE子句中的流字段上使用的少数谓词之一。...例如,'1U4L1",".A'(1个大写字母,4个小写字母,一个逗号,后面跟着任意数量的字母字符)。 如果希望返回包含已知字符类型序列的数据值,请使用%PATTERN。
#和##运算符 0.引言 C的预处理是在程序被编译之前执行的,包括将其他文件包含进正在编译的文件,定义符号常量和宏,条件编译和有条件的执行预处理命令。预处理命令都以 # 开头。 1....#include 功能:将指定文件的一个副本包含到命令所在位置上 形式:#include #include"filename" 区别:查找文件的起始位置不同。...使用引号时:会从待编译文件所在的目录里开始查找,一般用于程序员自己定义的头文件 使用尖括号:用于标准函数库的头文件,一般会在预先指定的编译器和系统目录中开始查找 2.....习惯上只用大写字母和下划线给符号常量命名 这也是一种宏,此处拆开只是为了单独说明,而且它也更常用 得到符号常量的另一途径:利用关键字const进行修饰 3....#error和#pragma预处理命令 格式:#error tokens 功能:打印出包含命令中指定标记的信息,具体内容和系统的实现有关。
:float fun(int x,int y){}(4) 定义函数时,必须采用传统方式或现代方式指定的形参类型(5) 函数返回值类型:两类(非void和void)形式1(非void):int fun(int...全局变量可以在它的有效范围内被每个函数引用。== 3==....=第一种:无参宏定义==格式:#define 宏名 宏内容功能:用一个指定的标识符(宏名)来代表一串字符如:#define PI 3.14.1592#define N 10注意:宏名我们一般用大写字母,...#undef命令可以提前终止宏名的作用域。在进行宏定义时,可以引用已经定义的宏名进行层层置换在进行宏替换时,必须先替换完所有的宏后再运算,同时替换过程中不能乱加括号。...注意这种格式,是原模原样替换,就原模原样的替换,然后再计算注:(1)在定义有参宏时,参数列表必须用一对小括号且小括号和宏名不能有空格(2)对有参宏名进行替换时,需要将形参改成相应的实参,并且注意分清形参和实参的对应关系
%PATTERN谓词提供区分大小写的通配符和不区分大小写的通配符('A')。ORDER BY子句:ORDER BY子句使用名称空间默认排序规则对字符串值进行排序。...它们已被弃用,不建议与新代码一起使用,因为它们的目的是为遗留系统提供持续的支持。他们是:%ALPHAUP — 除去问号(“?”)和逗号(“,”)之外的所有标点符号,并将所有小写字母转换为大写字母。...它将所有仅包含空格(空格,制表符等)的值作为SQL空字符串进行整理。由SQLUPPER代替。%UPPER —将所有小写字母转换为大写字母。主要用于映射旧全局变量。由SQLUPPER代替。...SPACE — SPACE排序将单个前导空格附加到一个值,强制将其作为字符串求值。...它可以使用索引,可以在进程专用的全局文件中使用临时文件,可以在本地数组中排序,也可以使用“]]”(之后排序)比较。
领取专属 10元无门槛券
手把手带您无忧上云