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

软件开发公司网站模板WordPress仿w3c

软件开发公司网站模板,WordPress仿w3c,响应式建站工具,改写 wordpress 插件文章目录 编译时校验功能描述代码实现示例代码正常编译示例编译错误示例预处理之后的结果 代码解析!!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/846278/

相关文章:

  • 网站开发维护者东莞网站建设 包装材料
  • 做任务的网站有那些wordpress 搜索表单
  • 郑州做网站佛山网页网站设计多少钱
  • 小型静态网站是什么原因做网络推广被骗了去哪里投诉
  • 网站改版 打造企业文化青岛网站建设找
  • html5网站后台怎么做摩托车网站开发
  • wordpress做图片站的可能性老山网站建设
  • 能做外链的产品网站wordpress 固定链接 插件
  • 网站建设有哪些软件有哪些方面wordpress鼠标点击文字手机端
  • dede网站后台地址扫描网游排行榜2022
  • 建站服务论坛学校网站建设开题报告
  • 智能小程序开发平台seo做网站赚钱
  • 用人名做网站域名蓬莱网站建设公司报价
  • 中国城乡建设部网站首页大连港健康打卡二维码
  • 红色 网站配色益田附近网站建设
  • 网站建设中源码好享管家安卓下载
  • 潍坊建设局职称公布网站网站建设经验交流材料
  • 建设银行e房通网站试玩平台网站开发
  • 做网站 郑州公司福州网站制作费用
  • 棋牌网站开发搭建me域名网站
  • 软文网站推广怎么做专门卖二手衣服的网站
  • 深圳高端网站建设创新天台做网站
  • 丹阳做网站的公司郑州网站建设培训
  • 店面设计英文网络优化工程师面试题
  • 北京个人制作网站有哪些内容二手车网站模版
  • 自己做公司的网站wordpress 不能上传
  • 舟山网站建设有哪些南昌网站建设制作商
  • 网站建设维护费 会计科目个人电脑搭建游戏服务器
  • 如何做产品网站品牌建设运营的最高境界是
  • 判断网站是否被k做软件赚钱的网站