2013-04-27 67 views
-4

我正在閱讀「C++ Primer」第5版一書,我讀到預處理器是一個運行在C++編譯器之前的程序,它用適當的內容替換#include,#define和#ifdefs以及其他程序,到編譯器。C++預處理器如何工作?

但我遇到了一個在cl.exe(微軟編譯器)的方式來查看預處理器輸出直接保存到文件。我做到了,當我打開預處理器輸出文件時,我很驚訝,因爲我沒有找到我期望的東西!

他們是完全大的,包含看起來像混淆的代碼!

請說明C++的預處理程序在現實中的作用。

+12

「我喜歡C++能夠在代碼頂部定義宏」 - 這是我第一次聽到有人這樣說。 – 2013-04-27 15:44:47

+0

不要責怪OP,我曾經喜歡用C++編寫std ::遍及整個地方,然後它變得煩人。 – Dmitry 2013-04-27 15:45:33

+1

您可能可能會生成您的Java代碼(使用預處理器,如[GPP](http://en.nothingisreal.com/wiki/GPP)或其他)。 – 2013-04-27 15:45:34

回答

-2

您可以推出一個JNI庫,它與包含所有必需宏的本機C/C++代碼相關聯。

+0

它和OP一樣好,有用,爲什麼downvotes大聲笑:D – Shark 2013-04-27 15:55:34

+0

-1。他正在尋找一種將預處理器應用於Java源文件的好方法,以便他可以在Java中使用宏。使用JNI不會解決這個問題。 – 2013-04-27 16:26:23

1

完全可以像處理C或C++一樣預處理Java。只要使用這樣的事情:

gcc -E myjava.java > myjava.preprocesses.java 

然後你可以使用宏擴展,#if等你的心內容。當然,它的缺點是編譯需要進一步的工具。

+0

謝謝!這真的很有用 – superspacemarines 2013-04-27 16:39:28