仅当将值与TRUE比较时,操作中xxx和bool的不安全混合警告

vlad_tepesch

我有一个用C(与C89兼容)实现的库。它定义了布尔数据类型bool32它还定义了布尔文字TRUEFALSE

#ifndef TRUE
# define TRUE  (0 == 0)
#endif

#ifndef FALSE
# define FALSE (0 != 0)
#endif

typedef uint32_t bool32;

像下面这样的C代码会在没有警告的情况下编译:

bool32 h = TRUE;
if(h==TRUE){
}
if(h==FALSE){
}

cpp中的相同代码会编译,并显示以下警告:

1> [文件名/行):警告C4805:'==':操作中'bool32'类型和'bool'类型的不安全混合

但仅用于TRUE比较。FALSE比较没有产生一个警告。

我还检查了预处理文件,以确保上述定义TRUEFALSE使用,而不是另外一个。这样看起来还可以。

是否有人解释为什么仅在发生警告时会发生TRUE这种情况,以及如何避免此警告?还有一个问题:为什么C模式下的编译器不警告?

克拉斯·林贝克

您会收到警告,因为将整数与a进行比较bool容易出错。

考虑以下:

bool32 x = 3;

if (x == FALSE) {
  printf("x is false\n");
} 
else if (x == TRUE) {
  printf("x is true\n");
} 
else {
  printf("x is neither true nor false!\n");
}

输出:

x既不正确也不错误!

请注意,无论TRUE / FALSE是整数还是布尔值,这都是一个问题,只是当TRUE是整数时,编译器无法正确检测到它。

存在问题是因为有多个整数值被认为是true。只有一个值被认为是false 0,因此那里不可能有任何混淆。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

不安全或未经检查的操作警告

来自分类Dev

使用泛型并尝试摆脱不安全的操作警告

来自分类Dev

编译警告:使用未经检查或不安全的操作

来自分类Dev

使用AVAudioPCMBuffer将浮点值写入C#中的浮点指针数组(不安全或安全)

来自分类Dev

使用AVAudioPCMBuffer将浮点值写入C#中的浮点指针数组(不安全或安全)

来自分类Dev

如何解决Swapon中的不安全警告?

来自分类Dev

SecurityError:canvas.toDataURL中的操作不安全

来自分类Dev

混合内容/不安全内容SSL

来自分类Dev

将子域指向Cloudfront时连接不安全

来自分类Dev

解决来自外部不安全服务器的混合内容警告

来自分类Dev

解决来自外部不安全服务器的混合内容警告

来自分类Dev

从车把帮手返回安全和不安全的混合内容

来自分类Dev

从不安全的结构中获取固定的数组值

来自分类Dev

为什么数组中的值不安全?

来自分类Dev

canvas toDataURL()-操作不安全

来自分类Dev

SecurityError:操作不安全。使用Htmlcanvas

来自分类Dev

JavaFX编译警告-“使用未经检查或不安全的操作”-原始数据类型?

来自分类Dev

安全代码中的不安全标签

来自分类Dev

警告:清理不安全的URL值数据:text / html; base64,

来自分类Dev

出现“不安全配置”空值

来自分类Dev

不安全的IO或:Haskeline和目录

来自分类Dev

Swift:gettimeofday和不安全指针

来自分类Dev

将安全保护级别设置为不安全时无法获取缓存

来自分类Dev

获取java.lang.Class的实例时未经检查或不安全的操作

来自分类Dev

使用Canvas时是否可以避免“操作不安全”?

来自分类Dev

C#中的不安全结构

来自分类Dev

在不安全的 YARN 集群中运行 Spark 时访问安全的 Hive

来自分类Dev

在ASP.NET MVC中,没有AntiForgeryToken的删除操作方法是否不安全?

来自分类Dev

jQuery 2.0.3错误-在firefox中打破了fadeIn(),show()-SecurityError:操作不安全

Related 相关文章

  1. 1

    不安全或未经检查的操作警告

  2. 2

    使用泛型并尝试摆脱不安全的操作警告

  3. 3

    编译警告:使用未经检查或不安全的操作

  4. 4

    使用AVAudioPCMBuffer将浮点值写入C#中的浮点指针数组(不安全或安全)

  5. 5

    使用AVAudioPCMBuffer将浮点值写入C#中的浮点指针数组(不安全或安全)

  6. 6

    如何解决Swapon中的不安全警告?

  7. 7

    SecurityError:canvas.toDataURL中的操作不安全

  8. 8

    混合内容/不安全内容SSL

  9. 9

    将子域指向Cloudfront时连接不安全

  10. 10

    解决来自外部不安全服务器的混合内容警告

  11. 11

    解决来自外部不安全服务器的混合内容警告

  12. 12

    从车把帮手返回安全和不安全的混合内容

  13. 13

    从不安全的结构中获取固定的数组值

  14. 14

    为什么数组中的值不安全?

  15. 15

    canvas toDataURL()-操作不安全

  16. 16

    SecurityError:操作不安全。使用Htmlcanvas

  17. 17

    JavaFX编译警告-“使用未经检查或不安全的操作”-原始数据类型?

  18. 18

    安全代码中的不安全标签

  19. 19

    警告:清理不安全的URL值数据:text / html; base64,

  20. 20

    出现“不安全配置”空值

  21. 21

    不安全的IO或:Haskeline和目录

  22. 22

    Swift:gettimeofday和不安全指针

  23. 23

    将安全保护级别设置为不安全时无法获取缓存

  24. 24

    获取java.lang.Class的实例时未经检查或不安全的操作

  25. 25

    使用Canvas时是否可以避免“操作不安全”?

  26. 26

    C#中的不安全结构

  27. 27

    在不安全的 YARN 集群中运行 Spark 时访问安全的 Hive

  28. 28

    在ASP.NET MVC中,没有AntiForgeryToken的删除操作方法是否不安全?

  29. 29

    jQuery 2.0.3错误-在firefox中打破了fadeIn(),show()-SecurityError:操作不安全

热门标签

归档