2012-06-05 87 views
2

可能重複:
Is there a portable way to print a message from the C preprocessor?打印一些與C預

當通過一個大的代碼庫導航,有時很難猜出是什麼定義,什麼是不。因此,我想在編譯時打印一些內容。例如:

#ifdef SOME_DEFINE 
// I want a preprocessor to print something here so that 
// I can know whether SOME_DEFINE is defined or not 
#endif 

這是可以做到與Ç
我在某處看到了一種叫做#error的東西。也許這是我唯一的選擇,或者不是?

+4

很多關於此的問題:http://stackoverflow.com/questions/3826832/is-there-a-portable-way-to-print-a-message-from-the-c-preprocessor – pb2q

+1

比如果預處理器支持它,'#error'是'#warning'。 –

回答

1

對於微軟的Visual C++:

#define __PRINT(str) __pragma(message(str)) 
1

有關#error指令的偉大的事情是,它即使不支持它!

如果支持,編譯器會告訴你"error: #error",如果不支持,編譯器會告訴你"invalid preprocessing directive"。無論哪種方式,這是一個致命的錯誤,停止編譯,編譯器會告訴你哪個是有問題的行。