用C预处理器打印一些东西

时间:2012-06-05 18:02:15

标签: c c-preprocessor

  

可能重复:
  Is there a portable way to print a message from the C preprocessor?

在大型代码库中导航时,有时很难猜出定义的内容和不定义的内容。因此,我想在编译时打印一些东西。例如:

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

这可能与 C 有关吗? 我在某个地方看到了一个叫#error的东西。也许这是我唯一的选择,不是吗?

2 个答案:

答案 0 :(得分:1)

对于MS Visual C ++:

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

答案 1 :(得分:1)

关于#error指令的好处是它即使不受支持也能正常工作!

如果支持,编译器会告诉您"error: #error",如果不支持,编译器会告诉您"invalid preprocessing directive"。无论哪种方式,它都是致命错误,编译停止,编译器会告诉您哪个是违规行。