首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GCC如何抑制“从指针目标类型中丢弃'volatile‘限定符”

GCC如何抑制“从指针目标类型中丢弃'volatile‘限定符”
EN

Stack Overflow用户
提问于 2021-03-10 13:33:04
回答 3查看 353关注 0票数 0

如何取消显示此警告?也许在代码中忽略了一些#杂注GCC诊断,或者在makefile中忽略了CFLAG?

EN

回答 3

Stack Overflow用户

发布于 2021-03-10 13:50:20

如果您发布了完整的警告消息,它应该显示特定的警告[-Wdiscarded-qualifiers]。与其他警告一样,只需在前缀加上no-即可禁止显示。

gcc manual

-Wno-discarded-限定符(仅限C和Objective-C )

如果指针上的类型限定符被丢弃,则不要发出警告。通常,如果将const char *变量传递给接受char *参数的函数,编译器会发出警告。此选项可用于抑制此类警告。

代码语言:javascript
运行
复制
$ cat test.c
#include <stdio.h>

int a;
volatile int *p = &a;

int main (void)
{
        int *q = p;
        return 0;
}

$ gcc test.c
test.c: In function ‘main’:
test.c:8:11: warning: initialization discards ‘volatile’ qualifier from pointer target type [-Wdiscarded-qualifiers]
  int *q = p;
           ^
$ gcc -Wno-discarded-qualifiers test.c
$ 
票数 0
EN

Stack Overflow用户

发布于 2021-03-10 14:19:22

尽管您可能已经知道这是一种糟糕的编程策略,但您通常可以在编译时禁用警告,而不仅仅是那些让您感到困扰的警告。

编译时添加-w选项

我还附上了关于警告选项的文档。

http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

希望我能帮上忙!

票数 0
EN

Stack Overflow用户

发布于 2021-03-11 19:10:40

好的,谢谢你们。-Wdiscarded-限定符对我没有真正的帮助。其实我试着在gcc的文档中找到它,但我不擅长这个。

这是我在项目CFLAGS ?= -g0 -O3 -Wno-discarded-限定符-Wshadow -Wno-uninitialized -Wall -Wextra -Wno-unused function -Wno-error=strict-prototypes Wpointer-arith-fno-严格别名-Wno-error=cpp -Wuninitialized -w许-uninitialized-Wno-unused参数-Wno-未使用参数-Wno-缺少字段-初始化器-Wtype-limits -Wsizeof--Wall-memaccess-Wno-格式-非文字-Wno-cast-qual -Wunreachable代码-Wno-switch-default -Wno-switch-enum -Wreturn--Wuninitialized- -Wmultichar -Wformat-security -Wno-忽略-限定符-Wno-error=pedantic Wno-sign-compare -Wno-error=missing-prototypes -Wall body-Wtype- -Wdeprecated -Wno-unused-value -Wno-unused-parameter -Wno-unused-parameter -Wno-missing format-Wno--Wall- -Wextra -Wno-unused参数-Wno-missing-字段-初始值-Wtype-limits -Wsizeof memaccess-Wno-format-非文字-Wpointer-arith -Wno-cast-qual -Wunreachable code-Wno-开关-默认-Wreturn-类型-Wmultichar -Wformat-安全-Wno-忽略-限定符-Wno-符号-比较LDFLAGS ?= -lm

我使用discard volatile限定符的原因是,我不想在函数原型中添加volatile,也不想在函数调用中强制转换它,因为一些变量在没有volatile键的情况下工作得很好,而另一些变量则不行。(它是一些常见的变量,也是thread_t类型)所以代码运行得很好,而且当我试图在函数调用中转换易失性类型时-发生了一些小故障,现在一切都正常了。谢谢你的帮助,我很感激!

现在有了这个键,我就有了“从指针目标类型中丢弃'volatile‘限定符”它的指针,这些指针有时会被编译器优化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66558919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档