当前位置: 首页 > news >正文

北京中御建设公司网站wordpress getthememod

北京中御建设公司网站,wordpress getthememod,做网站是如果盈利的,营销网站建设网络公司文章目录 编译时校验功能描述代码实现示例代码正常编译示例编译错误示例预处理之后的结果 代码解析!!estruct {int:-!!(e); }sizeof(struct {int:-!!(e); }) 参考代码 编译时校验 功能描述 用于在编译时检查一个条件是否为真,如果条件为真则会编译失败&#xff0c…

文章目录

  • 编译时校验
    • 功能描述
    • 代码实现
    • 示例代码
      • 正常编译示例
      • 编译错误示例
      • 预处理之后的结果
    • 代码解析
      • `!!e`
      • `struct {int:-!!(e); }`
      • `sizeof(struct {int:-!!(e); })`
    • 参考代码

编译时校验

功能描述

用于在编译时检查一个条件是否为真,如果条件为真则会编译失败,编译器报错

反之如果条件为假,则编译正常,且有返回值,返回 0。

代码实现

/** Force a compilation error if condition is true, but also produce a* result (of value 0 and type int), so the expression can be used* e.g. in a structure initializer (or where-ever else comma expressions* aren't permitted).*/
#define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); })))

参数 e 表示用于判断的表达式

示例代码

正常编译示例

#include <stdio.h>#define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); })))int main(void)
{printf("Compilation successful %d.\n", BUILD_BUG_ON_ZERO(0));return 0;
}

结果打印

Compilation successful 0.

编译错误示例

#include <stdio.h>#define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); })))int main(void)
{printf("Compilation successful %d.\n", BUILD_BUG_ON_ZERO(1));return 0;
}

编译错误信息

test.c: In function ‘main’:
test.c:3:51: error: negative width in bit-field ‘<anonymous>3 | #define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); })))|                                                   ^
test.c:7:44: note: in expansion of macro ‘BUILD_BUG_ON_ZERO’7 |     printf("Compilation successful %d.\n", BUILD_BUG_ON_ZERO(1));

预处理之后的结果

gcc -E test.c -> test.i
int main(void)
{printf("Compilation successful %d.\n", ((int)(sizeof(struct { int:(-!!(1)); }))));return 0;
}

代码解析

!!e

对条件 e 进行两次逻辑非运算,得到 逻辑值 结果 0 或者 1。如果表达式 e 的结果为 0 ,则得到 0 , 如果为非 0 值,则得到 1 。

struct {int:-!!(e); }

如果表达式 e 的结果为 0,则得到结构体 struct {int:0;},这是一个匿名的位域结构体,位域宽度为 0。

如果表达式 e 的结果为 1,则得到结构体 struct {int:-1;},则编译错误。由于位域的宽度不能是负的,所以编译错误,提示错误 error: negative width in bit-field <anonymous>

sizeof(struct {int:-!!(e); })

如果表达式 e 的结果为 0,则使用 sizeof 运算符计算得到这个匿名结构体 struct {int:0;} 的大小为 0,宏的返回值为 0。

参考代码

  • https://blog.csdn.net/u012028275/article/details/127478561
http://www.yayakq.cn/news/186236/

相关文章:

  • 泉州市亿民建设发展有限公司网站设计网站推广方案
  • 设计师免费素材网站推荐企业邮箱模板
  • 网站建设网站制作哪个好舆情分析网站
  • 昆明做大的网站开发公司本地的响应式网站建设
  • 公司如何做网站宣传2021不良正能量免费网站
  • 怎样在织梦网站建设目录合肥网站建设网站推广津学院
  • 电子商务网站建设与制作分销商城系统要具备哪些
  • 湖北省利川市建设局网站网络推广公司介绍
  • 网站套用模板为外国人做非法网站
  • 黄骅港站网站底部给网站地图做链接
  • 2003建网站推百拉
  • wordpress 小工具添加图片兰州官网优化技术厂家
  • wordpress页面属性模板seo免费课程视频
  • 成都网站建设全美温州市建设小学学校网站
  • 好的网站具备南京 微网站 建站
  • 南宁网站制作超薄网络聊城网站建设哪个好些
  • html5网站的优点虚拟主机做多个网站
  • 做网站的的步骤怎么写今天北京发生大事了
  • 网站维护是不是很难做泸州房产网
  • 苏州专业网站设计公司工业互联网平台系统
  • 常平网站建设创建自己的个人网站
  • 国内百度云网站建设宽城区网站建设
  • 网站超链接怎么做 word文档自己怎么优化关键词
  • 客户管理系统网站模板下载企业网站内容是什么
  • 微建站平台做调像什么网站找活
  • 网站木马文件删除wordpress配置文件路径
  • 二级域名做城市分网站网站建设与网页设计的区别
  • 低价机票网站建设网络营销案例论文3000字
  • 专门做旅游的网站有哪些网站总体规划
  • 南通单位网站建设WordPress更换主题残留