我知道C预处理器作为编译器的一部分存在。但我正在寻找一个独立的计划。有没有这样的工具?是否有任何C预处理器作为独立程序?
4
A
回答
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
cpp
只是其中之一。编译时这是一个分开的程序,由gcc
调用。
1
它是包的一部分,通常称为cpp
(C预处理器)。
which cpp
# /usr/bin/cpp
man cpp
2
mcpp。
在首页:
MCPP是C/C++预处理器,具有以下特点。
- 实现所有的C90,C99和C++ 98规范。
- 提供验证套件以全面测试C/C++预处理器的一致性和质量。当应用这个验证套件时,mcpp在许多现有的预处理器中区分它自己。
- 具有丰富的目标诊断功能,可以检查所有预处理问题,例如源代码中的潜在错误或缺乏可移植性。
- 有#pragma指令输出调试信息。
- 可移植并已移植到类UNIX系统和Windows上的许多编译器系统,包括GCC和Visual C++。
- 有各种行为模式。
- 可以编译为特定于编译器的预处理器来替换特定编译器系统的驻留预处理器,也可以编译为独立于编译器的命令,甚至可以作为从其他主程序调用的子例程。
- 提供日语和英语的综合文件。
- 是一款开源软件,采用BSD-style-license。
3
你也可以看看m4
什么是M4?
M4可以称为“模板语言”,“宏语言”或“预处理器语言”。名称“m4”也指以这种语言处理文本的程序:这个“预处理器”或“宏处理器”将输入m4模板作为输入,并将其发送到输出,然后在任何嵌入的指令(称为宏)上进行操作。
2
我已经使用filepp预处理除直C以外的文件。它是一个Perl模块,因此它非常便于携带。这很方便,你可以使用所有熟悉的习惯用法,并添加一些有用的功能。
从网站:
为什么filepp,而不是普通的旧CPP?
cpp是专门为 生成C编译器的输出。 是的,你可以使用任何类型的文件与 它,但它产生的输出包括 负载的空行和 风格的线条:
#1“file.c”
显然,这些线非常有用的 到C编译器,但没有用在说 的HTML文件。另外,由于使用Perl编写的filepp是 ,所以它是8位清理的,并且 适用于任何字符集,而不是 只是ASCII字符。 filepp也是 可定制,并希望更多的用户 比cpp友好。
相关问题
- 1. 独立多/处理程序reverse_tcp
- 2. 是否有任何预处理技术用于删除“孤立”点的群集?
- 3. C++预处理程序
- 4. 是否有比Pro * C/C++更智能的Oracle预处理器?
- 5. C++预处理器如何工作?
- 6. 检查一个RoutedEvent是否有任何处理程序
- 7. SASS是否有类似C预处理器的问题?
- 8. 任何让c预处理器忽略所有#include的方法?
- 9. C++预处理器
- 10. Java独立代理程序
- 11. 是否有用于Windows 7的预览处理程序VCL?
- 12. C编程:预处理器,宏作为标记
- 13. C++独立应用程序
- 14. 什么是独立应用程序或独立服务器?
- 15. ASP.NET MVC - Captcha作为独立程序集
- 16. 如果事件处理程序处于独立程序集中,是否停止垃圾回收?
- 17. 是否有用于C或C++的任何跨平台gzip处理器库?
- 18. 是否有任何独立的EJB容器放入非j2ee Web服务器?
- 19. Clang是否允许预处理器==?
- 20. MPI是否提供预处理器宏?
- 21. 独立作业的多核处理
- 22. C预处理器更换工作不
- 23. C预处理器操作员##
- 24. 如何从Android中的独立类调用处理程序?
- 25. 从独立程序创建共享库 - 如何处理“int main()”?
- 26. Python中是否有任何独立的pgp实现?
- 27. 是否有任何独立的HTML标记验证工具
- 28. 标准C预处理器和Objective-C预处理器之间是否存在差异?
- 29. C预处理程序#if表达式
- 30. 作为计时器的处理程序
请注意,大多数编译器(如GCC)都有一个类似-P开关的东西,它省略了预处理器输出中的linemarkers生成。 – Wiz 2014-01-04 08:32:18