预处理器指令#error: 'DEBUG 已定义'

Posted

技术标签:

【中文标题】预处理器指令#error: \'DEBUG 已定义\'【英文标题】:Preprocessor directive #error: 'DEBUG is defined'预处理器指令#error: 'DEBUG 已定义' 【发布时间】:2016-07-07 10:52:39 【问题描述】:

我在文件中的第一行是:

#define DEBUG

在我的程序中,我将此变量用作:

    #region Preprocessor directives
    #if DEBUG
    #error DEBUG is defined
    #endif
    #endregion

编译时出现此错误:#error: 'DEBUG is defined'

我是不是搞错了什么?

【问题讨论】:

这正是你定义的......你的预处理器指令基本上可以被解读为“当设置调试时显示错误'调试已定义'”。所以这表现得像它应该的那样(即显示错误)。你想做什么,具体的问题是什么? 好的。我误解了#error 指令的用法。我认为它用于在运行时引发定义的错误。但现在正如我从您上面的评论中所暗示的那样:#error 指令用于引发编译时错误。对吗? 是的,正如您在下面的 MSDN 链接中看到的那样,它旨在让您generate an error from a specific location in your code:https://msdn.microsoft.com/en-us/library/x5hedts0.aspx(我也会在一分钟内将其作为答案发布)跨度> 【参考方案1】:

正如我在 cmets 中已经指出的,这正是 `#error' 预处理器指令的目的。 MSDN上的描述说:

#error 允许您从代码中的特定位置生成错误。

在 MSDN 上查看此处:https://msdn.microsoft.com/en-us/library/x5hedts0.aspx

因此,在您的情况下,您的指令告诉预处理器在设置 DEBUG 符号时显示错误 DEBUG is defined

【讨论】:

以上是关于预处理器指令#error: 'DEBUG 已定义'的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C 预处理器指令

#error 预处理器指令中带有撇号的警告

如何将 Visual Studio 宏值放入预处理器指令中?

预处理器和使用关联

使用 C 预处理器指令进行编译时检查

为 Windows 7 定义预处理器指令