2010-12-12 157 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