我已經test.c的中,我想有聲明HOWTO:條件包括頭文件
#include "abc.h"
(libabc的頭文件)
只有test.c的編譯了libabc的如:
gcc test.c -labc
如果test.c的簡單編譯爲
gcc test.c
,abc.hs不應該包括在內。
我該怎麼做?
我已經test.c的中,我想有聲明HOWTO:條件包括頭文件
#include "abc.h"
(libabc的頭文件)
只有test.c的編譯了libabc的如:
gcc test.c -labc
如果test.c的簡單編譯爲
gcc test.c
,abc.hs不應該包括在內。
我該怎麼做?
一種方法是使用-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]"
}
。 。 。但我不真的推薦這個。
很難,因爲鏈接階段發生在編譯完成後。你可以調整一個Makefile來定義一個預處理宏,並將其用作測試條件。我想不出任何其他的方式。
+1的想法。我也不推薦,但這很有創意。 – qdii 2012-02-26 14:13:32