我知道 C 预处理器作为编译器的一部分存在。但我正在寻找一个独立的计划。有没有这样的工具?
答案 0 :(得分:10)
通常称为cpp
。例如,在我的Linux机器上:
CPP(1) GNU CPP(1) NAME cpp - The C Preprocessor SYNOPSIS cpp [-Dmacro[=defn]...] [-Umacro] [-Idir...] [-iquotedir...] [-Wwarn...] [-M|-MM] [-MG] [-MF filename] [-MP] [-MQ target...] [-MT target...] [-P] [-fno-working-directory] [-x language] [-std=standard] infile outfile
这个特殊的一部分是gcc
的一部分,可用于各种平台。
答案 1 :(得分:3)
从主页:
mcpp是一个具有以下功能的C / C ++预处理器。
- 实现所有C90,C99和C ++ 98规范。
- 提供验证套件,全面测试C / C ++预处理器的一致性和质量。应用此验证套件时,mcpp会在许多现有预处理器中区分它们。
- 具有丰富的目标诊断功能,可以检查所有预处理问题,例如源代码中的潜在错误或缺乏可移植性。
- 有#pragma指令输出调试信息。
- 可移植,并已在类UNIX系统和Windows上移植到许多编译器系统,包括GCC和Visual C ++。
- 有各种行为模式。
- 可以构建为特定于编译器的预处理器来替换特定编译器系统的常驻预处理器,也可以构建为独立于编译器的命令,或者甚至可以构建为从其他主程序调用的子例程。
- 提供日语和英语的综合文件。
- 是一种在BSD风格许可下发布的开源软件。
答案 2 :(得分:3)
您还可以查看m4
什么是m4?
M4可以称为“模板语言”,“宏语言”或“预处理器语言”。名称“m4”也指以这种语言处理文本的程序:这个“预处理器”或“宏处理器”将m4模板作为输入,并在对任何嵌入式指令(称为宏)执行操作后将其发送到输出。 / p>
答案 3 :(得分:2)
我已经使用filepp来预处理除直接C之外的文件。它是一个Perl模块,所以它非常便携。它非常方便,您可以使用您习惯的所有常用习语,并添加一些有用的功能。
来自网站:
为什么是filepp而不是普通的旧cpp?
cpp专门设计用于 为C编译器生成输出。 是的,您可以使用任何文件类型 它,但它创建的输出包括 大量的空白行和行 式:
#1“file.c”
显然这些线条非常有用 到C编译器,但没有用 一个HTML文件。另外,就像filepp一样 用Perl编写,它是8位干净的 适用于任何字符集,而不是 只是ASCII字符。 filepp也是 可定制的,希望更多的用户 比cpp友好。
答案 4 :(得分:1)
cpp
只是一个。这是编译时由gcc
调用的独立程序。
答案 5 :(得分:1)
它是包的一部分,通常称为cpp
(C预处理器)。
which cpp
# /usr/bin/cpp
man cpp