这是 icmun 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
icmake - 一个程序维护(使) 实用程序使用 C- 类似语法
概要
制作 [选项] 来源[.im] [目标[.bim]] [-- [参数]]
爱奇艺 文件
商品描述
爱奇艺(1) 可以作为替代 使(1). 在其标准操作模式下,它
调用以下程序:
o icm-pp 预处理icmake文件
o icm-comp 字节码编译 制作 s
o icm执行 执行字节码文件
爱奇艺 允许程序员使用一种编程语言(非常类似于众所周知的
C-编程语言)来定义(复杂)程序中涉及的动作
维护。 为了这, 制作 提供各种特殊运算符以及一套支持
已被证明对程序维护有用的功能。
该程序 爱奇艺(1) 可用于反汇编编译后的字节码 (.bim) 文件。 爱奇艺
主要用于插图、教育和调试。
一旦头文件被修改,传统的 make 实用程序会重新编译源代码。 在里面
的上下文 C + +中 程序开发这通常是一个坏主意,因为添加一个新成员到
class 通常不需要您重新编译类的源代码。 处理类
依赖 ICMBULD(1) 可以检查 课程设置 可用于定义依赖项的文件
班级之间。 默认情况下,不解释类依赖性。 参考 配置文件(7)
手册页了解更多详情。
配置
爱奇艺 使用以下文件和选项:
o 资源: 制作 脚本源文件(默认扩展名: .IM).
o DEST: 二进制 制作 脚本文件(默认: ‘源’.bim, 称为“.bim 文件”
下文)。
o --: 制作 参数分隔符分隔 制作 来自传递的参数的参数
到 .bim filenl() ARGS: 参数如下 -- 传递给 .bim 文件
原样,可从 名单 精液 参数定义为 制作
脚本的 主 函数的第二个参数(见下面的部分 USER 定义
职能)。 对于某些选项(见下文), -- 不需要分隔符。
爱奇艺 支持各种选项,如下所述。 这 -h 选项否决所有其他
选项, -a option 否决所有其他选项,除了 -h. 剩下的动作
选项(-b, -C, -e, -一世, -p 和 -t) 只能指定一个:
o -a
显示信息 制作,被否决 -h;
o -b
已停产:改用选项 -e;
o -c
此 制作 源文件被编译,生成一个.bim文件;
o -e
执行 制作 .bim 文件,给出为 制作的第一个文件参数。 任何额外的
参数按原样传递给 .bim 文件,并且 -- 不应指定;
o -F
文件名和标志以及要执行的所有操作的概述
制作 显示在标准输出流上;
o -h
提供使用信息并结束 制作;
o -i
第一个参数是 制作 源文件,默认的二进制文件是
必要时建造。 任何其他参数都传递给 .bim 文件
原样,和 -- 不应指定;
o -p
此 制作 只对源文件进行预处理,写入预处理后的文件
至 制作的第二个文件参数(默认情况下 ‘源’.pim);
o -q
被忽略,将来会被删除 制作 版;
o -t
下面的论点 -t 是临时 .bim 文件的名称,已删除
after 制作的电话。 什么时候 . 被指定为临时 .bim 文件的名称
然后是默认的临时目录,然后是 制作的进程ID,后跟
.bim 用来。
在临时 .bim 文件的名称之后是 制作 源脚本
必须指定。 任何其他参数都按原样传递给 .bim 文件,并且
-- 不应指定; 设置源脚本文件的可执行标志后
(CHMOD +x 脚本),并为它提供这样的初始行:
#!/usr/bin/icmake -t。
此 制作 脚本可以直接调用:
脚本 arg1 arg2
在这种情况下 制作 脚本 '脚本' 在接收到
参数 脚本 参数1 参数2.
o -T
此选项必须与用于存储的目录的名称一起提供
临时文件。 例如,当编译一个 制作 脚本,输出 制作“
预处理器是一个临时文件,在退出时被删除。 默认情况下 / tmp目录 用来,
除非 / tmp目录 不是可写目录,在这种情况下当前用户的 $ HOME
目录使用。 隐式临时文件名总是以进程 id 开头
电流 制作 的过程。
o -v
显示、 制作的版本号,并结束 制作,被否决 -h
爱奇艺:
文件: 二进制 制作 脚本文件。
预处理器 指令
以下预处理器指令可用:
评论:
标准 C 评论(全部介于 /* 和 */) 以及注释到行尾(所有
行内容如下 //) 被忽略。
o Shell 启动:第一行 制作-script 可能以 #!小路,其中
径 定义绝对位置 制作 程序。 通过制作脚本
可执行文件,无需显式调用即可调用 制作.
例如,如果(可执行)icmakefile 'icm'(无扩展名)的第一行
包含
#!/usr/bin/icmake -i
然后 ICM 可以作为命令发出,从而执行
/usr/bin/icmake -i icm ...
或者,
#!/usr/bin/icmake -t /tmp/icm
可能会被使用,导致执行
#!/usr/bin/icmake -t /tmp/icm icm ...
在这种情况下,二进制文件在退出时被删除。
o 的#include “文档名称”
该文件 文件名 包含在指令的位置
o 的#include
该文件 文件名 包含在 的#include 指示; 文件名
在由指定的冒号分隔的目录中搜索 IM 环境
多变的。 第一次出现 文件名 在指定的目录中 IM
使用环境变量。
o #定义 识别码 [定义]
文本 识别码 将被替换 定义. 定义可能包含
对已定义标识符的引用,使用 ${标识符} 格式。 如果
${标识符} 尚未定义(尚未),文本 ${标识符} 字面上保留。
防止无限递归最多100 ${标识符} 允许更换。
如果一行的最后一个字符是 a,则定义在下一行继续
反斜杠 (\)。 (不包括在定义中)。 预处理器
连接双引号字符串,双引号字符串不能跨越多个
线。 定义中的多个空格(双引号字符串之外)是
收缩到一个空白空间。
定义如下 #define 的 标识符是可选的。 如果省略,则
宏已定义,因此它可以用于 #if(n)定义 指令(见下文),但它们
不会被任何文本替换 制作 代码语句。
o #ifdef 识别码
如果 识别码 宏被定义为下一个代码块(直到匹配 的#else
or #ENDIF 指令被读取)是字节编译的。 否则,代码块是
忽略了。
o #ifndef 识别码
如果 识别码 宏是 不能 定义下一个代码块(直到匹配
的#else or #ENDIF 检测到指令)是字节编译的。 否则,块
代码被忽略。
o 的#else
终止一个 #ifdef 和 #ifndef 指令,反转接受决定
以下代码。 只有一个 的#else 指令可以与 #if(n)定义
指令。
o #ENDIF
终止从匹配开始的预处理器块 #ifdef, #ifndef or 的#else
指示。 这 #ENDIF 目录及其匹配 #if(n)定义 指令必须是
在同一个文件中指定。
o #undef 识别码
删除 识别码 来自定义的符号集。 这不影响
任何先前定义的符号的规范,其中 身份标识 定义
已经用过。 如果 识别码 未定义会发出警告。
数据 类型
爱奇艺 支持这些数据类型:
o ASCII码 字符 常数
ASCII 字符常量由一个字符组成,由单字符或双字符包围
引号。 单个字符(例如, '一种') 代表字符本身。 标准
转义序列(例如, '\n') 被支持并代表他们的标准转换
值(例如, '\n' 表示 ascii 值 10(十进制))。 非标逃生
序列(例如, '\X') 表示转义字符后面的 ascii 字符
(所以 '\X' 等于 'X')。 由三个八进制数字组成的转义序列表示
对应于八进制值模 256 的 ascii 字符(例如, '\123').
由 x 后跟两个十六进制数字组成的转义序列表示
对应于十六进制值的 ascii 字符(例如, '\xa4').
o INT
积分值,范围从 -0x8000 通过 0x7fff. INT 常数可能是
指定为十进制数(以数字 1 到 9 开头)、八进制数
(以 0 开头,后跟一位或多位八进制数字)十六进制数字
(以 0x 开头,后跟一个或多个十六进制数字)或作为 ASCII码
字符常量。
o 绳子
文本变量。 字符串常量由双引号分隔。 多串
常量可以连接,但单个字符串常量不能跨越多个
线。 仅由空格分隔的字符串常量(即空格、换行符、
注释) 被连接起来并代表一个单一的字符串常量。 表示一个
字符串常量中的行尾使用 \n 转义序列。
用双引号括起来的 ASCII 字符常量也可以用于
算术表达式,如果其中一个操作数是 INT. 单个字符
字符串常量 必须 是常数,不能是 绳子 变量。
同样,被单引号包围的 ASCII 字符常量可以用于
需要字符串操作数的情况。
o 名单
包含一系列可单独访问的数据结构 绳子 价值观。 什么时候
一个列表包含元素,它的第一个元素由索引 0 表示。
o 无效
与函数定义一起使用以指示该函数不返回
计算值。
变量可以在全局级别以及内部的任何本地级别定义
职能。 在函数内部定义时,标准 C 范围和可见性规则
申请。 例如,局部变量只能在它们自己或更深的嵌套中使用
块,它们的可见性在更深的嵌套块中通过定义相同的
那些嵌套更深的块中的命名变量。 变量是强类型的,并且
不能有类型 无效.
变量可以在定义时进行初始化。 初始化是表达式,即
可以使用预定义或用户定义的函数、常量值和变量值
在定义点可见。
预定义 常数
以下常量由 制作. 都是不变的 INT 值:
─────────────────────────────────
用于的符号值
─────────────────────────────────
O_ALL 8 名单
O_DIR 2 制作清单
O_FILE 1 制作清单
O_SUBDIR 4 制作清单
─────────────────────────────────
关 0 回声
ON 1 回声
─────────────────────────────────
P_CHECK 0 系统调用
P_NOCHECK 1 系统调用
─────────────────────────────────
S_IEXEC 32 统计
S_IFCHR 1 统计
S_IFDIR 2 统计
S_IFREG 4 统计
S_IREAD 8 统计
S_IWRITE 16 统计
─────────────────────────────────
以下常量取决于体系结构:
────────────────────────────────────────────────────── ──────────────
在平台上定义时为符号 1,否则为 0
────────────────────────────────────────────────────── ──────────────
unix Unix,通常带有 GNU 的 gcc 编译器
UNIX 也可能可用
linux x86 运行 Linux(通常使用 gcc)
LINUX 可能也可用
M_SYSV、M_UNIX x86 运行 SCO/Unix
_POSIX _SOURCE Unix 与 Posix 兼容编译器
__hpux HP-UX,带有本地 HP 编译器
────────────────────────────────────────────────────── ──────────────
操作员
整型 操作数:
所有类型 C 运算符可用(指针运算符除外,如 制作 不支持
指针)。 他们像他们一样运作 C- 编程语言对应物。
字符串类型 操作数:
针对 绳子 类型变量和/或常量可以使用以下运算符(a 和 b
代表 绳子 变量或常数):
o a + b: 返回一个新的 绳子 包含连接的值 绳子 价值观 a
和 b。 注意 绳子 常量可以直接连接(不使用 +
运算符),例如,以下两行都定义了字符串 “你好 世界”:
“你好,世界”
“你好”+“世界”
o a += b: a 必须是一个 绳子 变量,其中 绳子 变量或值 b is
附加。
o 字符串比较:运算符 == != <= >= < > != 和 == 可能适用于 绳子
值或变量,如果比较成功则返回 1,否则返回 0。
比较区分大小写,并遵循定义的顺序或字符
,在 ASCII码 字符集。
o !a: 布尔值 ! (not) 运算符返回 1 如果 绳子 a 为空,否则为 0
回。
o a 年轻的 b, a 较新 b: 如果文件返回 1 a 比文件更新 b. 例如,
“源.cc” 较新 “来源.o”. 文件 a 和 b 不必存在:如果两者都不存在
存在 0 返回; 如果 b 不存在,返回1; 如果 a 不存在 0 是
回来; 如果它们相同,则返回 0。 (这 存在() 预定义功能
(见下文,部分 预定义 职能) 可用于显式测试是否
文件已存在)。
o a 老年人 b: 如果文件变为 1 a 比文件旧 b. 例如, “libprog.a” 老年人
“来源.o”. 文件 a 和 b 不必存在:如果两者都不存在,则 0 是
回来; 如果 a 不存在,返回1; 如果 b 不存在返回0; 如果
他们同样老 0 被返回。
o []:索引运算符从字符串变量或常量中检索字符:它
返回一个字符串作为 右值. 因此,以下语句编译正常:
// 假设 str1 和 str2 是字符串
str1 = str2[3];
但以下语句无法编译:
str2[3] = "a";
如果提供了无效的索引值,则返回空字符串。
o `反引号`运算符(`字符串 命令`)
放置在两个反引号之间的字符串由 en(3) 功能。 这
存储在字符串参数中的命令生成的标准输出是
作为列表返回。 空列表表示无法执行该命令。
可以执行但不产生任何输出的命令返回一个列表
包含一个空元素。 命令的标准错误流输出不是
由反引号运算符收集。 但是,标准的外壳重定向可以是
用于收集标准错误流的输出。 例子:
printf(`"ls"`); // 打印元素
// 当前目录
预定义函数 评估(字符串 命令) 行为与反引号完全一样
运算符:它们是同义词。
列表类型 操作数:
针对 名单 类型变量和/或值可以使用以下运算符:
o a + b: 返回一个新的 名单 包含连接的值 名单 价值观 a 和
b。 这是 不能 集合操作:如果一个元素同时出现在 a 和 b他们会
在结果列表中出现两次(set-addition 由内置的
功能 列表).
o a - b: 返回一个新的 名单 包含元素的值 a 不存在的
in b。 这 is 集差操作:返回的列表包含所有元素
in a 不是元素 b.
o a += b: 中的元素 b 添加到元素中 a,这一定是一个 名单
多变的。 这是 不能 一套操作。
o a -= b: 中的元素 b 从元素中删除 a,这一定是一个 名单
多变的。 这个 is 集合操作:所有元素 a 在中找到 b ,那恭喜你,
已经从...删除 a.
o 列出相等比较:运算符 != 和 == 可能适用于 名单 值或
变量。 操作员 == 如果两个列表逐个元素相同,则返回 1
元素,否则返回 0。 操作员 != 反转结果 ==.
o !a: 布尔值 ! 运算符返回 1 如果 名单 a 为空,否则为 0
回。
o []:索引运算符从列表变量中检索列表元素:它返回一个
字符串作为 右值. 因此,以下语句编译正常:
// 假设 lst 是一个列表,str 是一个字符串
str = lst[3];
但以下语句无法编译:
lst[3] = 海峡;
如果提供了无效的索引值,则返回空字符串。
铸造:
可以使用标准执行类型转换 C cast-operator 进行转换:
o 字符串到整数,反之亦然((int)"123", (字符串)55)
o 字符串到列表 (名单 LST = (列表)“你好”)
流 控制
爱奇艺 提供以下子集 C的声明。 它们可以用作 C
编程语言。
o 表达 ;
简单的表达式语句;
o 复合语句
任何类型的变量都可以在任何组合内的任何地方定义和初始化
陈述。 这 能见度 变量的定义从它的定义点开始。
o if (健康)状况) 声明
在条件内部,可以定义和初始化变量。 例如,
如果 (字符串 str = getText())
过程(字符串);
在这个例子中, 过程 如果不调用 getText() 返回一个空字符串。 这
变量 STR 在之前或之后都不存在 if 语句。
o if (健康)状况) 声明 其他 声明
与前面的语句一样,在条件内部可以定义一个变量,并且
初始化。
o (在里面; 状况; 增量) 声明
变量(单一类型)可以在
初始化 部分。 这 初始化, 流程条件 和 增量 部分可能保持空白。 这
空条件部分被解释为“总是 true“。
o 而 (健康)状况) 声明
在条件内部,可以定义和初始化变量。
一个补充 do ... 尽管() 声明不可用。 请注意,定义一个
变量,使用初始化表达式意味着初始化
表达式在每次迭代时执行 而 陈述。 所以以下
语句永远不会结束,并将显示一个永不结束的值流 10:
而 (int x = 10)
printf(x--, "\n");
o 返回;及 回报 表达;
朴素 回报 语句可以用于 无效 功能,和 回报 表达
语句用于其他类型的函数。 功能 主 有返回类型
无效 所以在 主 只是简单的 回报 可以使用语句。 默认情况下 制作
脚本的退出值等于 0。使用内置函数 出口 (见下文)指定
任何其他退出值。
Be 建议: 不返回值的非空函数的行为是未定义的。
o 打破
叶 和 而 语句,否决语句的条件。
o 继续
继续下一次迭代 or 而 语句。
o 退出(表达式)
结束执行 制作-脚本。 这 表达 必须评估为 INT
值,它成为脚本的退出值。
预定义 职能
爱奇艺 提供以下预定义功能,可以在任何地方使用 制作
脚本。 以下概述按函数名称的字母顺序排列。
o 无效 arghead(字符串 h)
的辅助功能 exec() (另见下文 exec()): 定义‘参数头’,
用于 exec(). 默认情况下,“参数头”是一个空字符串。
o 无效 尾巴 (细绳 t)
的辅助功能 exec() (另见下文 exec()):定义‘参数尾部’,
用于 exec(). 默认情况下,`argument tail' 是一个空字符串。
o INT ASCII(字符串 s)
返回第一个字符 s 作为一个整数; 例如, ascii("A") 返回 65;
o 绳子 ASCII(整数 i)
退货政策 i 作为一个字符串,例如, ASCII(65) 返回字符串 “一个”;
o 绳子 change_base(字符串 文件, 绳子 新基地)
更改基本名称 文件, 返回更改后的名称。 例如,
change_base("/path/demo.im", “出去”) 回报 “/路径/out.im”;
o 绳子 change_ext(字符串 文件, 绳子 新的)
更改扩展名 文件, 返回更改后的名称。 例如,
rss_changeExt("source.cc", “哦”) 回报 “来源.o”;
o 绳子 更改路径(字符串 文件, 绳子 新路径)
更改路径规范 文件, 返回更改后的名称。 例如,
更改路径(“tmp/二进制”, "/ usr / bin") 回报 “/usr/bin/二进制”。 请注意
/如果需要,插入分隔符。
o 绳子 chdir(字符串 新目录)
更改脚本的工作目录,将前一个目录作为绝对目录返回
路径。
使用 chdir(".") 获取当前工作目录, chdir("") 可能习惯于
获取启动工作目录(此功能在发行版中被破坏
7.00 之前,但现在可以运行)。 该函数终止
制作-script 如果指定 新目录 不存在。
o 绳子 目录(整数 检查, 绳子 新目录)
与前一个功能相同的功能,但通过指定 检查 as
P_NOCHECK. 该函数不会终止脚本。 相反,它将返回
脚本的当前工作目录。
o cmdhead(字符串 h)
的辅助功能 exec() (另见下文 exec()): 定义一个“命令头”,以
用于 exec(). 默认情况下,`command head' 是一个空字符串。
o cmdtail(字符串 t)
的辅助功能 exec() (另见下文 exec()): 定义一个“命令尾”,以
用于 exec(). 默认情况下,`command tail' 是一个空字符串。
o 回声(整数 选择)
控制被调用程序(及其参数)的回显,指定 OFF 如果回声
没有被要求。 默认情况下 回声(开) 用来。
o 绳子 元素(整数 指数, 名单 (或 字符串) 变量)
作用与索引运算符相同:引用索引 ([]) 运算符
部分 操作员.
o 名单 评估(字符串 str)
此函数的作用与反引号运算符相同。 提供的示例
因此,反引号运算符也可以这样写:
printf(eval("ls")); // 打印当前元素
// 目录
o 执行(字符串 CMD, ...)
执行带参数的命令。 每个参数将以 参数头()“
参数和后缀 argtail()的论点。 注意没有插入空格
之间 参数头()的内容,正确的参数,以及 argtail()的论点。 全部
因此修改后的参数被连接起来,这次用单个空格分隔,和
然后 命令头()的内容插入在命令和第一个参数之间
(两侧由单个空格分隔)和 命令尾()的内容被附加
到参数(同样,由一个空格分隔)。 PATH 被搜索定位
CMD. 返回 0。
o 执行(整数 检查命令, 绳子 CMD, ...)
与前一个功能相同的功能,但通过指定 检查 as
未检查 该函数不会终止脚本。 相反,它将返回
调用命令的退出状态,或 0x7f00 如果没有找到命令。
o 执行(字符串 CMD, 绳子 cmdhd, 绳子 啊, ..., 绳子 阿尔特尔, 绳子 命令)
与...一样 exec(), 但必须指定命令头/尾和参数头/尾。
实际执行的命令以 CMD,其次是 命令硬盘. 接下来是系列
参数如下,每个参数都由 阿格德 和 argtl. 该命令以
命令行. 返回 0
o 执行(整数 检查, 绳子 CMD, 绳子 cmdhd, 绳子 啊, ..., 绳子 阿尔特尔,
绳子 命令)
与前一个功能相同的功能,但通过指定 检查 as
未检查 该函数不会终止脚本。 相反,它将返回
调用命令的退出状态,或 0x7f00 如果没有找到命令。
o INT 存在(字符串 文件)
返回一个非零值,如果 文件 存在,否则返回 0。
o 名单 fgets(字符串 文件, 名单 抵消)
注意: in 制作 版本 8.00.00 这个函数的原型从
名单 fgets(字符串 文件, INT 抵消) 至 名单 fgets(字符串 文件, 名单 抵消).
在包含的偏移量处找到的下一行 抵消 是从 文件. 通过一个
空列表到 获取 读书 文件 从一开始。
它返回一个列表,其中包含读取行的内容作为其第一个元素
(没有 \n 行终止符),作为其第二个元素的行终止符`\n和
(如果遇到),并将字符串作为它的第三个元素 OK 如果线路成功
读, 失败 如果从文件读取失败。 在 EOF 阅读时,空列表是
回来。 返回的列表可能包含其他元素,这些元素在内部
用于 获取 阅读下一行时。
要读取多行,首先传递一个空列表作为 得到的 第二个论点。
要读取后续行,请将先前返回的列表传递给 fgets的 第二
论据。
这是一个显示如何读取完整文件的示例:
列表 ret;
而(1)
{
ret = fgets("文件名", ret);
如果 (!ret)
打破;
进程(ret[0],ret[1]);
}
o INT fprintf(字符串 文档名称, ...)
将所有(逗号分隔的)参数附加到文件中 文件名. 返回数量
打印参数。
o INT fprintf(字符串 文档名称, 绳子 格式, ...)
将所有(逗号分隔的)参数附加到文件中 文件名. 返回数量
打印参数。
If 格式 包含占位符 %1 .. %n 输出已格式化(另请参阅
格式)。 请注意,在这种情况下,参数计数(也)开始于
格式字符串:后面的第一个参数 格式 被称为 %1.
o 绳子 get_base(字符串 文件)
返回基本名称 文件. 基本名称是没有路径前缀的文件
并且没有它的扩展。 扩展名是从最后开始的所有信息
文件名中的点。 如果未找到最后一个点,则文件名是基本名称。
例如,基本名称 b 等于 a, 的基本名称 美国广播公司 等于 b,基
的名字 一/二/三 等于 c.
o 绳子 获取()
以字符串形式返回下一个按下的键(不需要按“Enter”)。
o 绳子 get_dext(字符串 文件)
返回扩展名 文件,包括分隔点。 扩展名是全部
从文件名的最后一个点开始的信息。
如果没有找到最后一个点,则返回一个空字符串。
o 名单 getenv(字符串 环境变量)
返回环境变量的值 环境变量 在包含两个元素的列表中:
第一个元素指示是否定义了环境变量(值
“1”) 或不 (值 “0”);
第二个元素表示环境变量的值。
环境变量的形式为 变量=值, 如果定义了列表的
第二个元素包含 折扣值. 如果值为空,则定义变量,但
没有与之关联的文本。
o 绳子 get_ext(字符串 文件)
返回扩展名 文件,除了分隔点。 扩展名是全部
从文件名的最后一个点开始的信息。
如果没有找到最后一个点,则返回一个空字符串。
o INT 获取PID()
返回 icmake 字节码解释器的 process-id icm执行.
o 绳子 gets()
返回从键盘读取的下一行作为 绳子. 输入的行
键盘必须以“Enter”键终止,该键不存储在返回的
字符串。
o 绳子 获取路径(字符串 文件)
返回路径前缀 文件. 路径前缀是所有信息(和
包括)最终的目录分隔符(这取决于操作
系统、正斜杠或反斜杠)。
如果未找到路径,则返回空字符串。
o INT 列表查找(列表 首先, 绳子 str)
返回第一个索引 LST 字符串在哪里 STR 找到,或者 -1 如果 LST 才不是
包含 STR.
o INT 听(列表 l)
返回元素的数量 名单.
o 名单 列表(列表 呵呵, 名单 呼)
返回一个包含元素联合的列表 h 和 RHS.
o 名单 列表(列表 首先, 绳子 str)
返回一个包含元素联合的列表 LST 和 STR.
o 名单 制作清单(字符串 面具)
返回所有匹配文件的列表 面膜. 例如, 制作清单(“*.c”) 返回一个列表
包含所有以 .c.
o 名单 制作清单(类型, 绳子 面具)
与上一个函数相同,但目录元素的类型可能是
指定为其第一个参数:
符号含义
IS_ALL 获取所有目录条目
IS_DIR 获取所有目录,包括 . 和 ..
IS_FILE 获取文件列表
IS_SUBDIR 获取所有子目录
注意图案 * 将不匹配 Unix 类型操作下的隐藏条目
系统。 用 .* 对于这一点。
o 名单 制作清单(字符串 面具, 较新, 绳子 比较文件)
返回比提供的新的掩码匹配的所有文件的列表
比较文件。 操作员 年轻的 可以代替 较新。 注意 较新 和
年轻的 是运算符,而不是字符串。
o 名单 制作清单([int = IS_FILE,] 绳子 面具, 较新, 绳子 比较文件)
与之前的功能相同,但 类型 可以指定为 名单 制作清单(类型,
绳子 面具).
o 制作清单(字符串 面具, 年纪大了, 绳子 比较文件)
看上面; 返回比比较文件更旧的文件列表。
o 制作清单(类型, 绳子 面具, 年纪大了, 绳子 比较文件)
与之前的功能相同,但 类型 可以指定为 名单 制作清单(类型,
绳子 面具).
o INT 打印输出(...)
显示所有(逗号分隔)参数到 screen(即标准输出流)。
返回打印参数的数量。
o INT printf(字符串 格式, ...)
显示所有(逗号分隔)参数到 screen(即标准输出流)。
返回打印参数的数量( 格式 字符串算作一个参数)。
If 格式 包含占位符 %1 .. %n 输出已格式化(另请参阅
格式).
o INT putenv(字符串 环境变量)
添加 环境变量 到当前 (制作) 环境 使用格式:“VAR=value”。
返回0。
o 绳子 调整大小(字符串 斯特, INT 新长度) 返回字符串的副本 STR,调整为
新长度 人物。 如果 新长度 为负则返回一个空字符串,
if 新长度 超过 str的 length 然后初始化新添加的字符
到空格。
o INT 大小(列表 l)
弃用:使用 听.
o INT 大小列表(列表 l)
弃用:使用 听.
o 名单 统计(字符串 入口)
退货政策 统计(2) 目录项信息 条目 作为列表。 返回的列表
有两个元素:元素 0 是 属性 折扣值, 元素 1 包含的大小
文件。
属性作为位标志返回,由以下预定义组成
常数:
S_IFCHR S_IFDIR S_IFREG
S_IREAD S_IWRITE S_IEXEC
查看 统计(2) 这些常量的含义的手册页。
o 名单 统计(检查, 绳子 入口)
与前一个函数相同,但通过指定 检查 as P_NOCHECK 功能
不会终止脚本。 相反,它返回 统计(2)的返回值。
o INT strchr(字符串 斯特, 绳子 字符)
返回第一个索引 STR 其中的任何字符 字符 找到,或 -1
if STR 不包含任何字符 字符.
o INT 字符串(字符串 str)
返回中的字符数 STR (不计算最后的 0)。
o INT strfind(字符串 草垛, 绳子 针)
返回索引 草垛 哪里 针 找到,或者 -1 如果 针 不包含
in 草垛.
本篇 功能 是 被称为 字符串字符串() in 版本 before 7.00.
o INT 字符串格式(字符串 格式,...)
使用占位符 %1 .. %2 返回格式化字符串以寻址参数
以下格式。
示例:
void main()
{
int i = 10;
整数 j = 20;
字符串 s1;
字符串 s2;
// 传统方法:
s1 = (string)i + " " + (string)j + " " + (string)i;
// 使用str格式:
s2 = strformat("%1 %2 %1", i, j);
printf("s1 = %1, s2 = %2\n", s1, s2);
}
o 绳子 strlwr(字符串 s)
返回一个小写的副本 s.
o 名单 strtok(字符串 斯特, 绳子 分隔符)
返回一个包含所有子串的列表 STR 由一个或多个分隔
(连续)字符在 分隔符. 例如, strtok("你好 icmake的+世界", " +")
返回包含三个字符串的列表 “你好”, “icmake的”及 “世界”.
o 绳子 strupr(字符串 s)
返回一个大写的副本 s.
o 绳子 子字符串(字符串 文字, INT 抵消, INT 数数)
返回一个子串 文本处开始, 抵消, 包含由...组成 数 人物。 如果
抵消 超过(或等于)字符串的大小,或者如果 数 <= 0,然后是一个空字符串
被退回。 如果 抵消 小于 0 则使用 0。
o INT 系统(字符串 命令)
执行 命令. 返回值表示执行命令的退出值。 这
绳子 命令 可能包含重定向和/或管道字符。
o INT 系统(整数 检查, 绳子 命令)
与前一个功能相同的功能,但通过指定 检查 as
未检查 该函数不会终止脚本。 相反,它将返回
调用命令的退出状态,或 0x7f00 如果没有找到命令。
o 绳子 修剪(字符串 s)
返回一个副本 s 没有前导和尾随空格。
o 绳子 修剪左(字符串 str)
返回一个副本 s 没有前导空格。
o 绳子 修剪(字符串 s)
返回一个副本 s 没有尾随空格。
USER 定义 职能
无效 主
爱奇艺 必须为脚本提供用户定义的函数 主。 功能 主 具有
三个可选参数,最后一个可以省略(环境) 到第一个
(氩气), 像 C. 它的完整原型是(注: 无效 返回类型):
void main(int argc,列出 argv,列出 envp)
In 主(),
o 氩气 表示中元素的数量 精液;
o 精液 包含参数,元素 0 等于 .bim 的名称
文件;
o 环境 包含“环境”变量。 功能 听 可用于
确定其元素的数量。 中的元素 环境 有形式
变量=值. 或者,函数 获取环境 可用于检索
特定的环境变量立即。 例子:
void main(int argc,列表 argv)
{
要编译的列表;
国际idx;
如果(argc == 1)
用法(元素(0,argv));
if (toCompile = changed("*.cc"))
{
对于 (idx = length(toCompile); idx--; )
编译(元素(idx,toCompile));
if (getenv("dryrun")[0] == "0")
链接(元素(2,argv));
}
}
按照定义的顺序初始化所有全局变量 主 被称为
制作的运行时支持系统来执行额外的任务。
另外 定义 用户 功能
可以定义附加功能。 一旦定义,就可以调用这些函数。 向前
不支持引用变量或函数,但递归调用
功能是。 由于不支持函数声明,因此不支持间接递归
要么支持。
用户定义的函数必须具有以下元素:
o 函数的返回类型,必须是以下之一 空白, 内部, 绳子 or 名单。 那里
没有默认类型。
o 函数的名称,例如, 编.
o 参数列表,定义零个或多个逗号分隔的参数。 参数
本身由一个类型名称(内部, 绳子或 名单) 然后是
参数的标识符。 例如, (细绳 输出文件, 绳子 资源).
Ø 身体 由一对花括号 ({ 和 }).
函数体可能包含(可选初始化)变量定义。 多变的
定义以类型名称开头,后跟一个或多个逗号分隔(可选
初始化)变量标识符。 如果变量未显式初始化,则为
默认初始化。 默认情况下 INT 变量被初始化为 0,一个 绳子 is
初始化为空字符串 ("")和一个 名单 被初始化为一个零元素列表。
除了变量定义之外,主体可能包含零个或多个语句(参见
部分 流 控制)。 请注意,可以定义变量(并可选地初始化)
函数内部的任何地方,以及 如果, 和 而 声明。
的行为 制作- 使用不返回值的非空函数的脚本不是
定义。
使用 onworks.net 服务在线使用 icmun