我正在尝试编译一个导入此 BiTStream 文件的项目。
GCC 输出以下错误:
警告:堆栈使用可能不受限制 [-Wstack-usage=]
确实,在编译命令行(通过 CMake 生成)中我有:
-Wstack-使用=2048
我想在项目的其余部分保留此警告,但对此特定文件禁用它。
#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
有特定的语法吗?
线索就在错误消息中:
警告:堆栈使用可能不受限制 [-Wstack-usage=]
因此,您需要使用的#pragma是:
#pragma GCC diagnostic ignored "-Wstack-usage="
我不确定答案是否正确 我用 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)`
知道如何解决这个问题吗?