是否可以告訴預處理器檢查函數(而不是宏)是否被聲明?我嘗試了以下方法,但看起來並不奏效:檢查函數是否用C預處理器聲明?
#include <stdio.h>
int main(void)
{
#if defined(printf)
printf("You support printf!\n");
#else
puts("Either you don't support printf, or this test doesn't work.");
#endif
return 0;
}
我對此很感興趣。您正在使用的庫應該是一致的,以獲得您的示例:不會有沒有printf的stdio.h,並且如果printf可能在遙遠的將來被刪除,您現在不會知道替換是如何進行的被稱爲。 – flokra 2009-11-17 14:30:31
我在想這不是專門針對printf的,只是任何函數名稱。但是,如果你想知道函數是否存在,只需調用它 - 編譯器錯誤會告訴你:-) – paxdiablo 2009-11-17 14:39:52
我的主要動機是檢查函數如bcopy()或arc4random()(編寫跨平臺程序時) ,這些並不總是被定義的。 – Michael 2009-11-17 14:59:39