"错误: void 值未如预期地被忽略"解决

在C陷阱与缺陷中,实现assert的时候,作者处理的很巧妙,利用逻辑或运算符的特性将这个过程转化为一个表达式,在当条件为假时就会调用_assert_error报错并终止程序。

刚开始_assert_error 的返回值类型是 void 所以在((void)((e)
|| _assert_error(__FILE__, __LINE__))) 中出现了错误:void 值未如预期地被忽略,虽然exit(-1)并不会强制要求函数的返回值类型,但是在进行void强制忽略的时候就会察觉到这里的异常(具体原因是什么??)。

1 #include <stdio.h>

2 #include <stdlib.h>

3 #include <math.h>

4

5 #define assert(e) \

6     ((void)((e) || _assert_error(__FILE__, __LINE__)))

7 //  { if(!(e)) assert_error(__FILE__, __LINE__); }

8

9 int  _assert_error(char *filename, int line){

10     printf("Error ouccurred in %s at line:%d\n", filename, line);

11     exit(-1);

12 }

13

14

15 int main(){

16     int flag = 1;

17     int y = -8;

18     if(flag)

19         assert(y > 0);

20     else printf("hhhhhhhhh\n");

21     printf("%f\n", sqrt(y));

22 //  printf("test, %s--%d\n", __FILE__, __LINE__);

23

24     return 0;

25 }

"错误: void 值未如预期地被忽略"解决

时间: 2024-08-30 10:34:13

"错误: void 值未如预期地被忽略"解决的相关文章

IIS 7.5绑定中文域名转码启动站点报“值不在预期的范围内”

问题现象 IIS 7.5在绑定中文域名转码后,启动站点会出现[值不在预期的范围内]: 解决方案 此问题是由于中文域名绑定错误导致的,IIS 7.5针对中文域名会自动转换为punycode码,所以不需要绑定punycode码,如果要绑定中文域名直接绑定就可以了.(简单地讲就是直接在iis管理器绑定里面删除中文域名的转码保留中文即可) -----------------------------------------------------------------------------------

msxml3.dll 错误&#39;800c0005&#39; 系统未找到指定的资源错误

索了一下,产生msxml3.dll 错误 '800c0005'有以下几种原因: 引用内容: 1.url不存在 2.防火墙问题 3.没有启用Web服务扩展的 4.msxml3.dll损坏了 以上几个原因,第一点url不存在-----我的url肯定是存在的,而肯该程序我以前用过没有问题,也没有更改过程序,所以肯定不是这个原因. 第二点至第四点就是服务器的问题了,可能服务器的配置更改. 问题2的解决办法:关掉防火墙或在防火墙中将SYSTEM32目录中的DLLHOST.EXE文件加为信任文件,允许进入和

Value does not fall within the expected range 值不在预期的范围内

用vs2012 打开web.config时,提示如下错误:“Value does not fall within the expected range”; 中文提示:“值不在预期的范围内” 解决方案:删除解决方案同目录下的 .suo 文件.

Android For JNI(三)——C的指针,指针变量,指针常见错误,值传递,引用传递,返回多个值

Android For JNI(三)--C的指针,指针变量,指针常见错误,值传递,引用传递,返回多个值 C中比较难的这一块,大概就是指针了,所以大家还是多翻阅一下资料,当然,如果只是想了解一下,看本篇也就够了,不过我也尽量陈述的很详细 一.指针 要说指针,其实通俗易懂的话来说,他应该是保存内存地址的一个变量,我们来看一下小例子 #include <stdio.h> #include <stdlib.h> main(){ //int 变量 int i ; i = 5; //打印i的值

matlab 解决 错误使用 mex 未找到支持的编译器或 SDK

平时跑论文的里MATLAB代码很多都是调用了c的函数,然而然而就是在MATLAB里编译C这个小问题却困扰了我很久. 在matlab中编译C程序为matlab可识别的mex文件需要使用命令:  mex  filename.c .在这之前需要时用命令:mex -setup C++ 来更改缺省的compiler为相应的C编译器.如果没有安装matlab支持的编译器就会报错: 错误使用 mex未找到支持的编译器或 SDK.有关选项,请访问  http://www.mathworks.com/suppor

VS2017 Cordova 出现错误 @ionic/app-scripts 未安装

在安装vs2017 Cordova中遇到出现错误 @ionic/app-scripts 未安装 每次打开都会自动下载速度很慢,网上有很多帖子写到 进入windows的命令提示符. 输入: npm install @ionic/[email protected] --save-dev 如果顺利执行的话,再次进入VS2017就会发现@ionic/app-scripts已经更新好了. 3.6.2 然而,执行上面命令的时候出现了 Cannot download "https://github.com/s

httpclient4.x调用cxf发布的webservice的某个方法(有参数,有返回值)(未整合spring)

原文:httpclient4.x调用cxf发布的webservice的某个方法(有参数,有返回值)(未整合spring) 源代码下载地址:httpclient4.x调用cxf发布的webservice的某个方法(有参数,有返回值)(未整合spring) 采用spring + cxf编写服务端 httpclient4编写客户端调用 如题,代码没有jar 完整包: 链接:http://pan.baidu.com/share/link?shareid=2162612373&uk=402880896 密

HTTP 错误 401.1 - 未授权:登录失败

问题症状:HTTP 错误 401.1 - 未授权:登录失败或者需要连接到xxx网站(需要输入账号密码) 解决方案:把 C:\WINDOWS\system32\dtclog 这个目录重命名(如果有的话,没有就直接省去这一步),然后重新建立该目录. 在命令行下: msdtc -resetlog 再net start msdtc,显示服务启动成功了. 然后右键我的电脑--管理--本地用户和组,给IUSR_机器名和IWAM_机器名两个用户设置密码,要一样. 接着开始--运行--打cmd, 然后cd C:

Error-ASP.NET:由于未能找到 id 为“FileUpload1$gvFiles$ctl02$lnkBtnRemoveFile”的控件或在回发后将同一 ID 分配给另一个控件,导致发生错误。如果未分配 ID,请显式设置引发回发事件的控件的 ID 属性以避免此错误。

ylbtech-Error-ASP.NET:由于未能找到 id 为“FileUpload1$gvFiles$ctl02$lnkBtnRemoveFile”的控件或在回发后将同一 ID 分配给另一个控件,导致发生错误.如果未分配 ID,请显式设置引发回发事件的控件的 ID 属性以避免此错误. 1.返回顶部 1. “/”应用程序中的服务器错误. 由于未能找到 id 为“FileUpload1$gvFiles$ctl02$lnkBtnRemoveFile”的控件或在回发后将同一 ID 分配给另一个控件