2012-11-16 44 views
0

我有很多代碼都是基於來自編譯器的定義進行條件編譯,而不是代碼本身或外部頭文件中的任何定義。例如,屢有我的東西,如:防止Doxygen進行條件編譯(編譯器 - 內在定義)

#if defined _MSC_VER || defined __ICL 
// A lot of freakin code 
#elif defined __GNUC__ || defined __ICC 
// A bunch more here 
#else 
#error "Unsupported environment" 
#endif 

我需要爲platofm /編譯器特定的章節裏面的所有代碼生成文檔,但我不能簡單地設置ENABLE_PREPROCESSING爲NO,因爲它必須是對根據文檔,INCLUDE_GRAPH和INCLUDED_GRAPH可以工作。

那麼,我該怎麼做?

回答

1

您首先必須在doxygen配置的「預定義」部分中定義一個宏DOXYGEN或類似的宏。然後,您必須分開#elif分開#if並記錄您找到一個有效配置的事實。

但要注意,如果這些不同的部分定義了相同的函數或宏,這將doxygen的容易迷路。