如何禁止从“ void *”到“ foo *”转换的警告(通过-fpermissive从错误中减少)

大卫·X

我正在尝试使用g ++编译一些C代码(是的,是有目的的)。我收到类似的错误:

error: invalid conversion from 'void*' to 'unsigned char*' [-fpermissive]

添加-fpermissive到编译选项让我:

error: invalid conversion from 'void*' to 'unsigned char*' [-Werror=permissive]

由于,这似乎是一个错误-Werror,但是将-Wno-error=permissive -Wno-permissive结果添加到:

error: -Werror=permissive: no option -Wpermissive
error: unrecognized command line option "-Wno-permissive" [-Werror]

如何禁用从void *到其他指针类型的转换的警告(全局)?

乌鸦

您不能“禁用从void*向其他指针类型转换的警告”,因为这不是警告-这是语法错误。

此处发生的事情是您正在使用-fpermissive它将某些错误(包括该错误)降级为警告,因此可以编译一些不符合要求的代码(显然,许多语法错误类型(例如缺少花括号)无法降级为警告,因为编译器无法知道如何修复它们以将其转换为易于理解的代码)。

然后,您还将使用-Werror它将所有警告升级为错误,包括将-fpermissive错误转化为的“警告”

-Wno-error仅用于求反-Werror-Werror即将所有警告视为错误,用指定的警告除外,这些警告-Wno-error仍保留为警告。就像该-W标志所暗示的那样,这两个标志都与警告一起使用,因此它们对这个特定问题无能为力,因为您在这里遇到的是一个错误对于这种无效的转换,没有“警告”,您可以关闭或打开-Werror因为它不是真正的警告-这是一个错误,-fpermissive仅导致被视为警告。

在这种情况下,您可以使用使用编译不合格的代码这仍然会给您一个警告,但是像所有警告一​​样,它不会阻止编译成功。如果您故意尝试编译不合格的代码,则使用是没有意义的,因为您知道您的代码包含错误,因此即使使用也会导致警告,因此指定等效于说“请不要编译我的不合格代码”代码,即使我刚刚已经要求您这样做。”-fpermissive-Werror-Werror-fpermissive-Werror

使g ++抑制警告的最大方法是使用-fsyntax-only它将检查语法错误,而没有其他任何检查,但是由于这里的语法错误,对您无济于事,而您能做的最好的就是变成了警告-fpermissive

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误:从'void *'到'arguments *'的无效转换[-fpermissive]

来自分类Dev

g++ 错误从“void*”到“info*”的无效转换[-fpermissive],错误:从“void*”到“void*(*)(void*)”的无效转换[-fpermissive]

来自分类Dev

从Foo **到void **的无效转换-为什么允许隐式类型转换为void *但不允许为void **?

来自分类Dev

从Foo **到void **的无效转换-为什么允许隐式类型转换为void *但不允许为void **?

来自分类Dev

错误:从'int(*)(void *)'到'void *(*)(void *)'的无效转换

来自分类Dev

错误:从'void *'到'int(*)(const void *,const void *)'的无效转换

来自分类Dev

如何将void *转换为foo *以符合C ++?

来自分类Dev

foo(void)与foo(void *)

来自分类Dev

错误:在给定的命令集中从'int'到'void *'[-fpermissive]的无效转换

来自分类Dev

错误:从 'void*' 到 'const uint8_t* {aka const unsigned char*}' [-fpermissive] 的无效转换

来自分类Dev

g ++编译器:从'pthread_t {aka long unsigned int}'到'void *(*)(void *)'的错误无效转换[-fpermissive]

来自分类Dev

函数签名中typedef void FOO与#define FOO void的含义

来自分类Dev

C ++错误:从'void *'到'char *'的无效转换

来自分类Dev

错误类型转换void指针到int

来自分类Dev

在OpenCL clCreateContext中从void(*)(...)到void(*)(...)的无效转换

来自分类Dev

如何使编译器不显示int到void指针强制转换警告

来自分类Dev

VSCode仅在将Foo.js导入到某处时才通过相应的Foo.d.ts提供intellisense。如何在Foo.js本身中启用智能感知?

来自分类Dev

错误:JNINativeMethod nfptr抛出从jobjectarray *到void *的无效转换

来自分类Dev

错误:从'char *'到'char'的无效转换[-fpermissive]

来自分类Dev

qsort给出[错误]:从'int(*)(cricketer *,cricketer *)'到'int(*)(const void *,const void *)'的无效转换

来自分类Dev

禁止警告:删除“ void *”未定义

来自分类Dev

如何在R中暂时禁止警告

来自分类Dev

foo({1,2})如何用于“ void foo(pair <int,int>)”

来自分类Dev

void foo(const int a)中的const有什么作用?

来自分类Dev

当T == void时如何最好地解决“ void foo(const T&t = T())”

来自分类Dev

malloc-从void *到double *的无效转换

来自分类Dev

C ++ malloc从'void *'到struct的无效转换

来自分类Dev

类型转换(* void []到向量C ++)

来自分类Dev

从'void *'到'FILE *'的无效转换-ROOT

Related 相关文章

  1. 1

    错误:从'void *'到'arguments *'的无效转换[-fpermissive]

  2. 2

    g++ 错误从“void*”到“info*”的无效转换[-fpermissive],错误:从“void*”到“void*(*)(void*)”的无效转换[-fpermissive]

  3. 3

    从Foo **到void **的无效转换-为什么允许隐式类型转换为void *但不允许为void **?

  4. 4

    从Foo **到void **的无效转换-为什么允许隐式类型转换为void *但不允许为void **?

  5. 5

    错误:从'int(*)(void *)'到'void *(*)(void *)'的无效转换

  6. 6

    错误:从'void *'到'int(*)(const void *,const void *)'的无效转换

  7. 7

    如何将void *转换为foo *以符合C ++?

  8. 8

    foo(void)与foo(void *)

  9. 9

    错误:在给定的命令集中从'int'到'void *'[-fpermissive]的无效转换

  10. 10

    错误:从 'void*' 到 'const uint8_t* {aka const unsigned char*}' [-fpermissive] 的无效转换

  11. 11

    g ++编译器:从'pthread_t {aka long unsigned int}'到'void *(*)(void *)'的错误无效转换[-fpermissive]

  12. 12

    函数签名中typedef void FOO与#define FOO void的含义

  13. 13

    C ++错误:从'void *'到'char *'的无效转换

  14. 14

    错误类型转换void指针到int

  15. 15

    在OpenCL clCreateContext中从void(*)(...)到void(*)(...)的无效转换

  16. 16

    如何使编译器不显示int到void指针强制转换警告

  17. 17

    VSCode仅在将Foo.js导入到某处时才通过相应的Foo.d.ts提供intellisense。如何在Foo.js本身中启用智能感知?

  18. 18

    错误:JNINativeMethod nfptr抛出从jobjectarray *到void *的无效转换

  19. 19

    错误:从'char *'到'char'的无效转换[-fpermissive]

  20. 20

    qsort给出[错误]:从'int(*)(cricketer *,cricketer *)'到'int(*)(const void *,const void *)'的无效转换

  21. 21

    禁止警告:删除“ void *”未定义

  22. 22

    如何在R中暂时禁止警告

  23. 23

    foo({1,2})如何用于“ void foo(pair <int,int>)”

  24. 24

    void foo(const int a)中的const有什么作用?

  25. 25

    当T == void时如何最好地解决“ void foo(const T&t = T())”

  26. 26

    malloc-从void *到double *的无效转换

  27. 27

    C ++ malloc从'void *'到struct的无效转换

  28. 28

    类型转换(* void []到向量C ++)

  29. 29

    从'void *'到'FILE *'的无效转换-ROOT

热门标签

归档