如何暂时禁用GCC警告“Wstack-usage”?

问题描述 投票:0回答:2

我正在尝试编译一个导入此 BiTStream 文件的项目。

GCC 输出以下错误:

警告:堆栈使用可能不受限制 [-Wstack-usage=]

确实,在编译命令行(通过 CMake 生成)中我有:

-Wstack-使用=2048

我想在项目的其余部分保留此警告,但对此特定文件禁用它。

我已经检查了GCC警告选项GCC诊断指令并尝试过:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wswitch-enum"
#pragma GCC diagnostic ignored "-Wformat"
#pragma GCC diagnostic ignored "-Wswitch-default"
#pragma GCC diagnostic ignored "-Wunused-parameter"
#pragma GCC diagnostic ignored "-Wstack-usage"

#include <bitstream/mpeg/psi/descs_print.h>

#pragma GCC diagnostic pop

但GCC仍然抱怨:

警告:“#pragma GCC Diagnostic”类型后的未知选项 [-Wpragmas]

#pragma GCC 诊断警告“-Wstack-usage”

请注意,其他警告已正确禁用。

Wstack-usage
有特定的语法吗?

c pragma gcc-warning
2个回答
7
投票

线索就在错误消息中:

警告:堆栈使用可能不受限制 [-Wstack-usage=]

因此,您需要使用的#pragma是:

#pragma GCC diagnostic ignored "-Wstack-usage="

0
投票

我不确定答案是否正确 我用 Gcc 7.5.0 尝试了上面的方法:

Code:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstack_usage="
  if (stack_ends_here != NULL)
  {
    int alloca_size= sizeof(void *)*LF_PINBOX_PINS*npins;
    /* create a sorted list of pinned addresses, to speed up searches */
    if (available_stack_size(&pinbox, stack_ends_here) >
        alloca_size + ALLOCA_SAFETY_MARGIN)
    {
      struct st_harvester hv;
      addr= (void **) alloca(alloca_size);

我从海湾合作委员会得到:

/my/maria-10.6/mysys/lf_alloc-pin.c:344:32: error: unknown option after #pragma GCC diagnostic’ kind [-Werror=pragmas]
 #pragma GCC diagnostic ignored "-Wstack_usage="
                                ^~~~~~~~~~~~~~~~
/my/maria-10.6/mysys/lf_alloc-pin.c:330:13: error: stack usage might be unbounded [-Werror=stack-usage=]
 static void lf_pinbox_real_free(LF_PINS *pins)`

知道如何解决这个问题吗?

© www.soinside.com 2019 - 2024. All rights reserved.