C/C++技巧
+ -

C/C++技巧 布尔型警告

2023-06-06 12 0

在返回bool型变量时,但我们有时会返回int等非bool型变量,当然编译器会自动进行类型的转换,代码运行的结果也会返回我们所期望的结果,但就是在编译过时产生一个警告信息。当然少了我们可以忽略不计,但如果工程太大,这样的警告太多,和编译输出错误混在一起,很不利于我们代码的非错。
如有下代码:

// t.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

bool  IsTrue()
{
    int a = 1;
    return a;
}
int _tmain(int argc, _TCHAR* argv[])
{
    bool isok = IsTrue();
}

编译输出:

1>------ Build started: Project: t, Configuration: Debug Win32 ------
1>  t.cpp
1>c:usersadministratordesktopttt.cpp(9): warning C4800: 'int' :
forcing value to bool 'true' or 'false' (performance warning)
1>  t.vcxproj -> C:\Users\Administrator\Desktopt\Debugt.exe
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

1转换成bool型为true,肯定没有问题,但在编译过程中输出的这个警告信息总是有点小的瑕疵。当然我们也可以用上节的方法进行警告屏蔽 ,但就为了这一个而这样弄,总是感觉有点大才小用。
那用什么办法了?
我们可以使用!!非非来进行强制转换,这种转换是无警告的。

#include "stdafx.h"

bool  IsTrue()
{
    int a = 1;
    return !!(a);
}
int _tmain(int argc, _TCHAR* argv[])
{
    bool isok = IsTrue();
}

如果为了方便,我们也可定义一个宏来进行转换:
如:

#define B(a) (!!(a))

0 篇笔记 写笔记

C/C++技巧 布尔型警告
在返回bool型变量时,但我们有时会返回int等非bool型变量,当然编译器会自动进行类型的转换,代码运行的结果也会返回我们所期望的结果,但就是在编译过时产生一个警告信息。当然少了我们可以忽略不计,但如果工程太大,这样的警告太多,和编译输出错误混在一起,很不利于我们代码的非错。如有下代码:// t......
C/C++技巧 禁用或启用某个警告
在编写C/C++代码时,过多的警告输出信息会大大降低编译速度,同时也会降低我们对代码错误的排查速度。警告信息一般是通过手动修改代码来完成,但对有些警告信息我们认可但又不想让编译器提示时,我们就可以使用#pragma warning来禁用某些警告信息。pragma warning不仅可以用来禁用......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!