这是 unifdef 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
Unifdef, 统一堕落 — 从代码中删除预处理器条件
概要
Unifdef [-bBcdehKkmnsStV[-I径[-[ID符号[=VAL]][-[i]U符号] ... [-f 时装秀[-x {012}]
[-M 回传[-o 输出文件[入档 ...]
统一堕落 [-I径] ... 文件
商品描述
- Unifdef 效用有选择地处理条件 CPP(1) 指令。 它从一个
文件中的指令和它们指定的任何附加文本都应该被删除,而
否则留下文件。
- Unifdef 效用作用于 #如果, #ifdef, #ifndef, #elif, 的#else及 #ENDIF 线,使用
中指定的宏 -D 和 -U 命令行选项或 -f 定义文件。 指令
如果宏规范足以为其提供确定的值,则处理
控制表达。 如果结果为 false,则指令及其下的以下几行
控制被删除。 如果结果为真,则仅删除指令。 一个 #ifdef or
#ifndef 如果未指定其控制宏,则指令不变地传递。
任何 #如果 or #elif 具有未知值的控制表达式或 Unifdef 无法解析
不变地通过。 默认情况下, Unifdef 忽略 #如果 和 #elif 具有常数的线
表达式; 可以通过指定来告诉它处理它们 -k 命令行上的标志。
它理解表达式语法的常用子集 #如果 和 #elif 行数:
整数常量,在命令行上定义的宏的整数值, 定义()
运营商,运营商 !, <, >, <=, >=, ==, !=, &&, ||, 和括号表达式。 一种
一种“短路”评估用于 && 运算符:如果任一操作数是
肯定为假则结果为假,即使另一个操作数的值是
未知。 类似地,如果任一操作数 || 肯定是真的那么结果就是真的。
在评估表达式时, Unifdef 不首先展开宏。 宏的价值
必须是一个简单的数字,而不是一个表达式。 允许有限形式的间接,其中
一个宏的值是另一个的名称。
在多数情况下, Unifdef 不区分类对象宏(不带参数)
和类似函数的宏(带参数)。 类似函数的宏调用可以出现在
#如果 和 #elif 控制表达式。 如果宏没有明确定义,或者被定义
与 -D 命令行上的标志,或使用 #定义 育明在 -f 定义文件,其
参数被忽略。 如果在命令行上显式未定义宏 -U
标志,或与 #undef 育明在 -f 定义文件,它可能没有任何参数,因为这个
导致语法错误。
- Unifdef 实用程序对 C 的了解刚好足以知道其中一个指令何时出现
不活动,因为它在注释中,或受反斜杠连续行的影响。 它
发现格式异常的预处理器指令,并知道何时布局太奇怪了
它来处理。
一个脚本叫做 统一堕落 可用于删除所有条件 CPP(1) 指令来自
文件。 它用 Unifdef -s 和 CPP -dM 获取所有控制宏及其的列表
定义(或缺少定义),然后调用 Unifdef 带有适当的参数来处理
文件。
配置
-D符号=VAL
指定将宏定义为给定值。
-D符号 指定将宏定义为值 1。
-U符号 指定未定义宏。
如果同一个宏出现在多个参数中,则最后一次出现占主导地位。
-ID符号[=VAL]
-iU符号 C 字符串、注释和行继续在 #ifdef 和 #ifndef
由这些选项指定的宏控制的块。
-f 时装秀
该文件 时装秀 包含 #定义 和 #undef 预处理器指令,它们具有
与相应的效果相同 -D 和 -U 命令行参数。 你可以有
多 -f 参数并将它们与 -D 和 -U 论据; 以后的选项覆盖
较早的。
每个指令必须在一行上。 类对象的宏定义(没有
参数)被设置为给定的值。 类似函数的宏定义(带有
参数)被视为它们被设置为 1。
-b 用空行替换删除的行而不是删除它们。 互斥
与 -B 选项。
-B 压缩已删除部分周围的空行。 与 -b
选项。
-c 补码,即本应被删除或消隐的行被保留并保留
反之亦然。
-d 打开调试消息的打印。
-e 默认情况下, Unifdef 如果需要去掉一个预处理器会报错
跨越多行的指令,例如,如果它有一个多行注释
挂在右手端。 这 -e flag 使它忽略该行。
-h 打印帮助。
-I径 指定为 统一堕落 一个额外的地方寻找 的#include 文件。 这个选项
被忽略 Unifdef 为了兼容 CPP(1) 并简化
实施 统一堕落.
-K 总是对待结果 && 和 || 如果任一操作数是
未知,而不是在未知操作数不能影响结果时短路。
此选项是为了与旧版本的兼容 Unifdef.
-k 流程 #如果 和 #elif 带有常量表达式的行。 默认情况下,节
由这些线路控制的通过不变,因为它们通常开始
“#if 0”并用作一种注释来勾勒未来或过去的发展。
把它们去掉是不礼貌的,就像普通评论一样。
-m 就地修改一个或多个输入文件。
-M 回传
修改输入文件,并通过附加
回传 到输入文件名。
-n 将#line 指令添加到任何已删除行之后的输出中,以便错误
编译输出文件时产生的对应于输入中的行号
文件中。
-o 输出文件
将输出写入文件 输出文件 而不是处理时的标准输出
单个文件。
-s 这个选项不是像往常一样处理输入文件,而是导致 Unifdef 产生
在预处理器指令控制表达式中使用的宏列表。
-S 像 -s 选项,但也会打印每个宏的嵌套深度。 这是
用于计算相互依赖的可能组合的数量
定义/未定义的宏。
-t 禁用对 C 字符串、注释和行继续的解析,这很有用
对于纯文本。 这是一个全面的版本 -ID 和 -iU 标志。
-V 打印版本详细信息。
-x {012}
将退出状态模式设置为零、一或二。 见 退出 状态 以下部分为
细节。
- Unifdef 实用程序的输入来自 标准输入 如果没有 文件 论据。 你必须使用
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 -m or -M 选项,如果有多个输入文件。 您可以从 stdin 或
使用“-”输出到标准输出。
- Unifdef 实用程序与 -D符号 选项 差异(1)。
退出 状态
在正常使用中 Unifdef 实用程序的退出状态取决于使用 -x
选项。
如果退出模式为零(默认),则 Unifdef 如果输出是一个,则以状态 0 退出
输入的精确副本,如果输出不同,则状态为 1。
如果退出模式是一种, Unifdef 如果输出未修改则以状态 1 退出,如果输出未修改则以状态 0 退出
不同。
如果退出模式为二, Unifdef 在这两种情况下都以状态零退出。
在所有退出模式下, Unifdef 如果出现错误,则以状态 2 退出。
退出状态为 0 如果 -h or -V 给出了命令行选项。
诊断
嵌套层次太多。
不当 #elif, 的#else or #ENDIF.
混淆的预处理器控制线。
过早的 EOF(带有最近未终止的行号 #如果).
评论中的EOF。
使用 onworks.net 服务在线使用 unifdef