【问题标题】:Multi C compiler #warning message多 C 编译器#warning 消息
【发布时间】:2026-02-23 23:05:02
【问题描述】:

我正在开发一些代码,以便在 MS Visual C 2010 编译器和嵌入式 ARM 编译器上编译。此外,我想在编译时打印一些警告,以提醒我有一些测试代码。不幸的是,MS 使用 #pragma 而不是 #warning 来发送消息,所以我不能只在两个编译器中使用相同的预处理器指令。

我可以在任何地方这样做:

#ifdef _MSC_VER
 #pragma message("Something to say....")
#else
 #warning "Something to say...."
#endif

但最好有一个宏来封装它,例如:

#define ccWarnMessage(m)   \
    #ifdef _MSC_VER \
     #pragma message(m) \
    #else \
     #warning m \
    #endif

这不起作用,但有没有办法以一种简洁的方式做到这一点?

【问题讨论】:

    标签: c warnings


    【解决方案1】:

    我不会为此使用警告。我看到您使用 IDE,因此使用注释标记(例如 TODO)要容易得多。它对编译器是透明的,不会弄乱源代码,而且 IMO 更方便。您有一些预定义的令牌,您可以创建自己的令牌。

    warnings应该留作警告

    【讨论】:

    • 我猜这适用于 VS IDE,对 Keil IDE 不太确定!
    • 它也可以在 Eclipse 中使用。 Keil 是一个特殊的案例,代码几乎不能移植。