2011-06-16 69 views
3

我在編譯它前通過C預處理器運行我的源文件兩次,並且我想延遲#include指令直到第二遍。cpp:延遲#include's直到第二遍

直觀地說,我想這一點,但它不工作:

##include <zlib.h> 

我只是需要一個結構,即預處理時,會給#include mylib

+1

我在想想要這樣做的原因。照顧開導? – cHao 2011-06-16 22:37:55

+0

@cHao:我正在使用flex,並且我想對該文件進行預處理以使我可以編寫正則表達式,但該文件需要在經過flex處理後再次運行預處理器。 – bukzor 2011-06-16 22:40:04

+1

您可以使預處理器無法識別的格式使您的包含,並且當它執行它的事情(假設flex更改文件)時將flex更改爲「正確」格式?由於沒有修改文件或做條件包含,你可能沒有太多的運氣 - 預處理器將有相同的東西來處理兩次,所以它會在它運行兩次時做同樣的事情。 – cHao 2011-06-16 22:50:11

回答

3

你可以定義一個宏,像

#define INCLUDE #include 

,然後當你有東西,使用宏來代替。

INCLUDE <zlib.h> 

在海灣合作委員會的預處理器,至少,這給了我#include <zlib.h>