【问题标题】:Warning equivalent of #pragma poison相当于#pragma 毒药的警告
【发布时间】:2015-11-12 19:29:48
【问题描述】:

我使用 crash 函数来测试 Crashlytics 集成,但我显然不想在应用中发布该代码。

可能会毒化标识符,因此当前或将来的任何使用都会导致错误:

#pragma GCC poison crash

是否有等效的#pragma 指令在使用标识符时发出警告?我希望能够在构建代码库的同时保留需要注意的可见指示符。

【问题讨论】:

    标签: ios xcode preprocessor crashlytics


    【解决方案1】:

    这应该可以工作,现在_Pragma 可用。除了使用#pragma GCC poison,您可以只使用#define 标识符crash 以使用#pragma GCC warning 生成警告的方式:

    #define DO_PRAGMA(x) _Pragma(#x)
    #define WARN(x) DO_PRAGMA(GCC warning #x)
    #define crash WARN("crash" used) crash
    

    前两个宏只是减少了转义引号的工作。请注意,crash 会扩展为自身(以及 _Pragma),这是因为 C 预处理器不会在其自身的扩展中扩展标记。

    如果您将 warning 更改为 error,则会收到错误消息。您可以通过使用更多宏轻松安排更改所有这些,或者您可以只使用-Werror

    【讨论】:

      【解决方案2】:

      你可以使用#warning

      用法如下:

      #warning This is a custom message
      

      【讨论】:

      • 这会将警告添加到特定行,但不会像poison 那样自动标记标识符的所有未来使用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多