2

可能重复:
是否有可移植的方式从 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

这可能与C有关吗?我在某处
看到了一个名字。#error也许这是我唯一的选择,或者不是?

4

2 回答 2

1

#error指令的伟大之处在于,即使它不受支持,它也能正常工作!

如果支持,编译器会告诉你"error: #error",如果不支持,编译器会告诉你"invalid preprocessing directive". 无论哪种方式,这都是一个致命错误,编译停止,编译器会告诉你哪一行是有问题的行。

于 2012-06-05T19:02:59.957 回答
1

对于 MS Visual C++:

#define __PRINT(str) __pragma(message(str))
于 2012-06-05T18:13:35.287 回答