2010-12-12 168 views

回答

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友好。

+0

请注意,大多数编译器(如GCC)都有一个类似-P开关的东西,它省略了预处理器输出中的linemarkers生成。 – Wiz 2014-01-04 08:32:18