英语法语西班牙文

OnWorks 网站图标

cpphs-hugs - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 cpphs-hugs

这是 cpphs-hugs 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


cpphs - 为 Haskell 开放的类似 cpp 的预处理器

概要


CPPHs [文件名|OPTION] ...

商品描述


CPPHs 是一种自由化的重新实施 CPP (1) C 预处理器,in 和 for
哈斯克尔。

为什么要重新实现cpp? 不管对错,C 预处理器在 Haskell 中被广泛使用
源代码。 它为不同的编译器、不同的编译器启用条件编译
相同编译器的版本和不同的操作系统平台。 它也偶尔使用
因为它的宏语言,它可以启用某些形式的特定于平台的细节——
填充,例如繁琐的实例定义和 FFI 样板生成
声明。 但是,除了明显的审美之外,cpp还有两个问题
那些:

对于某些 Haskell 系统,尤其是 Windows 上的 Hugs,真正的 cpp 无法通过
默认。

即使对于其他 Haskell 系统,gcc 3.x 系列提供的通用 cpp
正在以与 Haskell 语法不兼容的方式微妙地改变。 有
一直存在问题,例如字符串间隙和素数字符
身份标识。 这些问题只会变得更糟。

因此,尝试提供 cpp 的替代品似乎是正确的,两者都与
Haskell,并且它本身是用 Haskell 编写的,以便它可以与编译器一起分发。

CPPHs 功能非常齐全,并与 -传统 cpp的风格。
它有两种模式:

仅条件编译 (--诺宏),

和完整的宏扩展(默认)。

In --诺宏 模式, CPPHs 只执行条件编译动作,即 的#include的,
#如果的,和 #ifdef的根据文本替换定义进行处理(命令-
行和内部),但不执行参数化宏扩展。 在全
兼容模式(默认)、文本替换和宏扩展也是
在非 cpp 文本的剩余正文中处理。

工作特点:

#ifdef 简单的条件编译

#如果 defined()、&&、||、== 等的完整布尔语言。

#elif 链式条件

#定义
内嵌定义(文本替换和宏)

#undef 在线撤销定义

的#include
文件包含

#线 行号指令

\n 所有 # 指令中的行延续

/ ** / 宏定义中的标记串联

## ANSI 样式的令牌链接

# ANSI 风格的令牌字符串化

__文件__
DIY 错误消息的特殊文本替换

__线__
DIY 错误消息的特殊文本替换

__日期__
特殊文本替换

__时间__
特殊文本替换

宏展开是递归的。 重新定义宏名称不会产生警告。
可以在命令行上定义宏 -D 就像文本替换一样。 宏
名称可以是 Haskell 标识符,例如带有主要的 ` 和反引号 ´
字符,比 C 中稍微宽松一些,但它们仍然可能不包含运算符
符号。

保留输出中的行数,以便任何后来的处理器都可以给出
有意义的错误信息。 当一个文件是 的#include'd, CPPHs 插件 #线 指令
同样的原因。 即使存在续行,编号也应该是正确的。
如果你不想 #线 指令在最终输出中,使用 --诺琳 选项。

cpp 指令中的任何语法错误都会向 stderr 发出消息并停止程序。
找不到 #include 文件会向 stderr 发出警告,但处理仍在继续。

您可以在命令行上提供任意数量的文件名。 结果被链接到
标准输出。

-D符号 定义文本替换(默认值为 1)

-Dsym=VAL
定义具有特定值的文本替换

-I 为#include 的搜索路径添加一个目录

-O文件 指定输出文件(默认为标准输出)

--诺宏
只处理 #ifdef 和 #include,
不要扩展宏

--诺琳
从输出中删除 #line 丢弃

- 跳闸
将 C 风格的注释转换为空白,甚至在外部
cpp 指令

--哈希
识别 ANSI # stringise 操作符,以及 ## for
宏内的标记串联

- 文本 将输入视为纯文本,而不是 Haskell 代码

- 布局
在宏扩展中保留换行符

--未点亮
删除文学风格的评论

- 版
报告cpphs的版本号并停止

默认情况下没有定义文本替换。 (正常的cpp通常有定义
用于机器、操作系统等。如果您愿意,这些可以很容易地添加到 cpphs 源代码中。)
搜索路径按顺序搜索 -I 选项,除了目录
调用文件,然后是当前目录,总是首先搜索。 再次,没有
默认搜索路径(同样,这可以轻松更改)。

差异性 CPP


一般来说,cpphs 是基于 -传统 行为,而不是 ANSI C,并且具有
以下与标准 cpp 的主要区别。

一般用途总体评估

这款 # 引入任何 cpp 指令必须在一行的第一列(而
ANSI 允许在 # ).

生成 #线 n "文件名" 语法,而不是 # n "文件名" 变种。

C 注释仅从 cpp 指令中删除。 他们没有从其他人身上剥离
文本。 考虑例如在 Haskell 中,以下所有操作都是有效的
符号: /* */ * / * 但是,您可以使用 - 跳闸 选项。

语言

接受 / ** / 用于宏定义中的标记粘贴。 然而, /* */ (任何文字
在打开/关闭注释之间)插入空格。

ANSI ## 令牌粘贴运算符可用于 --哈希 旗帜。 这是为了避免
误解任何同名的有效 Haskell 运算符。

将宏形参替换为实际的,甚至在字符串内部(双精度或单精度)
引)。 这是 - 传统行为,ANSI 不支持。

承认 # 仅当您使用 --哈希
选项。 (这是一个 ANSI 添加,只需要因为引用的字符串化(上面)是
ANSI 禁止。)

完全保留文本替换定义中的空格(模换行符),
但消除了前导和尾随空格。

精确地(模
换行符),但消除了前导空格。

完全保留宏调用参数中的空格(包括换行符),但前导
并消除尾随空格。

随着 - 布局 选项,文本替换或宏定义中的行延续
在宏调用中保留为换行符。 (对于布局敏感的代码很有用
哈斯克尔。)

使用 onworks.net 服务在线使用 cpphs-hugs


免费服务器和工作站

下载 Windows 和 Linux 应用程序

  • 1
    PAC 经理
    PAC 经理
    PAC 是 Perl/GTK 的替代品
    SecureCRT/Putty/等(Linux
    ssh/telnet/... gui)... 它提供了一个 GUI
    配置连接:用户,
    密码,EXPECT 规则...
    下载 PAC 管理器
  • 2
    GeoServer的
    GeoServer的
    GeoServer是一个开源软件
    用 Java 编写的服务器,允许用户
    共享和编辑地理空间数据。
    专为互操作性而设计,它
    发表...
    下载地理服务器
  • 3
    萤火虫III
    萤火虫III
    免费和开源的个人理财
    经理。 Firefly III 具有
    复式簿记系统。 你可以
    快速输入并整理您的
    交易我...
    下载萤火虫III
  • 4
    Apache OpenOffice 扩展
    Apache OpenOffice 扩展
    Apache的官方目录
    OpenOffice 扩展。 你会找到
    扩展范围从字典到
    用于导入 PDF 文件和连接的工具
    与外...
    下载 Apache OpenOffice 扩展
  • 5
    螳螂BT
    螳螂BT
    Mantis 是一个易于部署的网络
    基于错误跟踪器来帮助产品错误
    追踪。 它需要 PHP、MySQL 和一个
    网络服务器。 查看我们的演示并托管
    提供...
    下载MantisBT
  • 6
    LAN Messenger
    LAN Messenger
    LAN Messenger 是一个 p2p 聊天应用程序
    用于 Intranet 通信,并且不
    需要服务器。 各种得心应手
    支持的功能包括
    通知...
    下载 LAN Messenger
  • 更多 ”

Linux 命令

Ad