2012-02-25 112 views
1

我已經test.c的中,我想有聲明HOWTO:條件包括頭文件

#include "abc.h"(libabc的頭文件)

只有test.c的編譯了libabc的如:

gcc test.c -labc

如果test.c的簡單編譯爲

gcc test.c,abc.hs不應該包括在內。

我該怎麼做?

回答

3

一種方法是使用-D定義一個宏:

gcc test.c -labc -DABC 

#ifdef ABC 
#include "abc.h" 
#endif 

如果你從猛砸運行此命令,那麼你可以在原則上創建一個殼函數來包裹gcc自動添加-DABC時指定了-labc

function gcc() 
{ 
    local arg 
    for arg in "[email protected]" ; do 
     if [[ $arg = -labc ]] ; then 
      command gcc "[email protected]" -DABC 
      return 
     fi 
    done 
    command gcc "[email protected]" 
} 

。 。 。但我不真的推薦這個。

+0

+1的想法。我也不推薦,但這很有創意。 – qdii 2012-02-26 14:13:32

1

很難,因爲鏈接階段發生在編譯完成後。你可以調整一個Makefile來定義一個預處理宏,並將其用作測試條件。我想不出任何其他的方式。