【问题标题】:Create custom #warning flags创建自定义#warning 标志
【发布时间】:2010-11-12 19:17:46
【问题描述】:

我正在构建一个商业应用,我们正在使用一些 GPL 代码来帮助我们。

如何添加#warning#error 语句,以便在为调试而构建代码时,它会发出警告,但在我们为发布而构建时会抛出错误?

我能做到:

#warning this code is released under a CCL licensing scheme, see Source_Code_License.rtf
#warning this code is not LGPL-compliant
#warning this code was copied verbatim from a GP Licensed file

在文件的开头,但我可以做得更好吗?如果包含文件,是否有更好的方法来标记文件?

我正在使用带有 gcc 或 clang 的 Objective-C++。

【问题讨论】:

  • 如果你使用的是Objective C,那你为什么要添加c++标签?
  • 我使用的是Objective-C++,有些是C++,有些是Objective-C,有些只是组合在一起,到处乱七八糟。
  • @Stephen;我很抱歉搞砸了。 (您应该正确地@address 评论回复,否则您回复的人不会在他们的回复标签上看到它们。我只是偶然发现的。)
  • @sbi,对不起。我不知道@实际上有效。我还以为是推特的事情。 Id 应该突出显示自己或其他东西。
  • @sbi,我可以去哪里告诉人们它应该突出显示?元?

标签: c++ objective-c gcc warnings pragma


【解决方案1】:
#ifdef SOME_SYMBOL
#error "foobar"
#else
#warning "foobar"
#endif

NDEBUG 的用途略有不同(控制断言),可能是 #undef 并有选择地重新定义(重新包含 assert.h 以实现更改),因此它可能不是正确的符号。但它是一个标准宏,可以使用。

请注意,#error 是标准的,但 #warning 是扩展。

【讨论】:

    【解决方案2】:

    改用#pragma 消息。

    【讨论】:

    • 当然,这是一个例子:#warning 这是一个自定义警告
    猜你喜欢
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多