那些网站做任务领q币东莞公司网站价格

pingmian/2026/1/23 5:21:41/文章来源:
那些网站做任务领q币,东莞公司网站价格,门户网站开发语言,网页设计网站设计欣赏C语言中如何使用宏C#xff08;和C#xff09;中的宏#xff08;Macro#xff09;属于编译器预处理的范畴#xff0c;属于编译期概念#xff08;而非运行期概念#xff09;。下面对常遇到的宏的使用问题做了简单总结。 关于#和## 在C语言的宏中#xff0c;#的功能是将其… C语言中如何使用宏C和C中的宏Macro属于编译器预处理的范畴属于编译期概念而非运行期概念。下面对常遇到的宏的使用问题做了简单总结。 关于#和## 在C语言的宏中#的功能是将其后面的宏参数进行字符串化操作Stringfication简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号。比如下面代码中的宏 #define WARN_IF(EXP) do{ if (EXP) fprintf(stderr, Warning: #EXP /n); } while(0) 那么实际使用中会出现下面所示的替换过程 WARN_IF (divider 0);被替换为do { if (divider 0) fprintf(stderr, Warning divider 0 /n); } while(0); 这样每次divider除数为0的时候便会在标准错误流上输出一个提示信息。 而##被称为连接符concatenator用来将两个Token连接为一个Token。注意这里连接的对象是Token就行而不一定 是宏的变量。比如你要做一个菜单项命令名和函数指针组成的结构体的数组并且希望在函数名和菜单项命令名之间有直观的、名字上的关系。那么下面的代码就非常实用 struct command { char * name; void (*function) (void); }; #define COMMAND(NAME) { NAME, NAME ## _command } // 然后你就用一些预先定义好的命令来方便的初始化一个command结构的数组了 struct command commands[] { COMMAND(quit), COMMAND(help), ... } COMMAND宏在这里充当一个代码生成器的作用这样可以在一定程度上减少代码密度间接地也可以减少不留心所造成的错误。我们还可以n个##符号连接 n1个Token这个特性也是#符号所不具备的。比如 #define LINK_MULTIPLE(a,b,c,d) a##_##b##_##c##_##d typedef struct _record_type LINK_MULTIPLE(name,company,position,salary); // 这里这个语句将展开为 // typedef struct _record_type name_company_position_salary; 关于...的使用 ...在C宏中称为Variadic Macro也就是变参宏。比如 #define myprintf(templt,...) fprintf(stderr,templt,__VA_ARGS__) // 或者 #define myprintf(templt,args...) fprintf(stderr,templt,args) 第一个宏中由于没有对变参起名我们用默认的宏__VA_ARGS__来替代它。第二个宏 中我们显式地命名变参为args那么我们在宏定义中就可以用args来代指变参了。同C语言的stdcall一样变参必须作为参数表的最有一项出 现。当上面的宏中我们只能提供第一个参数templt时C标准要求我们必须写成 myprintf(templt,); 的形式。这时的替换过程为 myprintf(Error!/n,);替换为fprintf(stderr,Error!/n,); 这是一个语法错误不能正常编译。这个问题一般有两个解决方法。首先GNU CPP提供的解决方法允许上面的宏调用写成 myprintf(templt); 而它将会被通过替换变成 fprintf(stderr,Error!/n,); 很明显这里仍然会产生编译错误非本例的某些情况下不会产生编译错误。除了这种方式外c99和GNU CPP都支持下面的宏定义方式 #define myprintf(templt, ...) fprintf(stderr,templt, ##__VAR_ARGS__) 这时##这个连接符号充当的作用就是当__VAR_ARGS__为空的时候消除前面的那个逗号。那么此时的翻译过程如下 myprintf(templt);被转化为fprintf(stderr,templt); 这样如果templt合法将不会产生编译错误。 这里列出了一些宏使用中容易出错的地方以及合适的使用方式。 错误的嵌套Misnesting 宏的定义不一定要有完整的、配对的括号但是为了避免出错并且提高可读性最好避免这样使用。 由操作符优先级引起的问题Operator Precedence Problem 由于宏只是简单的替换宏的参数如果是复合结构那么通过替换之后可能由于各个参数之间的操作符优先级高于单个参数内部各部分之间相互作用的操作符优先级如果我们不用括号保护各个宏参数可能会产生预想不到的情形。比如 #define ceil_div(x, y) (x y - 1) / y 那么 a ceil_div( b c, sizeof(int) ); 将被转化为 a ( b c sizeof(int) - 1) / sizeof(int); // 由于/-的优先级高于的优先级那么上面式子等同于 a ( b (c sizeof(int) - 1)) / sizeof(int); 这显然不是调用者的初衷。为了避免这种情况发生应当多写几个括号 #define ceil_div(x, y) (((x) (y) - 1) / (y)) 消除多余的分号Semicolon Swallowing 通常情况下为了使函数模样的宏在表面上看起来像一个通常的C语言调用一样通常情况下我们在宏的后面加上一个分号比如下面的带参宏 MY_MACRO(x); 但是如果是下面的情况 #define MY_MACRO(x) { /* line 1 */ /* line 2 */ /* line 3 */ } //... if (condition()) MY_MACRO(a); else {...} 这样会由于多出的那个分号产生编译错误。为了避免这种情况出现同时保持MY_MACRO(x);的这种写法我们需要把宏定义为这种形式 #define MY_MACRO(x) do { /* line 1 */ /* line 2 */ /* line 3 */ } while(0) 这样只要保证总是使用分号就不会有任何问题。 Duplication of Side Effects 这里的Side Effect是指宏在展开的时候对其参数可能进行多次Evaluation也就是取值但是如果这个宏参数是一个函数那么就有可能被调用多次从而达到不一致的结果甚至会发生更严重的错误。比如 #define min(X,Y) ((X) (Y) ? (Y) : (X)) //... c min(a,foo(b)); 这时foo()函数就被调用了两次。为了解决这个潜在的问题我们应当这样写min(X,Y)这个宏 #define min(X,Y) ({ typeof (X) x_ (X); typeof (Y) y_ (Y); (x_ y_) ? x_ : y_; }) ({...})的作用是将内部的几条语句中最后一条的值返回它也允许在内部声明变量因为它通过大括号组成了一个局部Scope。 转载于:https://www.cnblogs.com/iplus/archive/2013/04/07/4467308.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/86584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天津做淘宝网站教务系统登录入口

下列代码都是以自己的项目实例讲述的,相关的文本内容很少,主要说明全在代码注释中。我是使用阿里云云通信的短信服务,第一次使用会摸不着头绪,这里我们需要做些准备工作:1、登陆自己的账号进入阿里云官网,没…

深圳做微信网站制作成都有哪些做网站开发的大公司

if __name__ __main__: 是一个常见的 Python 代码块,通常作为程序的主入口。 这个代码块通常用于包含脚本的主要功能或逻辑,它会在脚本被直接执行时运行,但不会在脚本作为模块导入时运行。 其中,__name__ 是 Python 中的一个特…

潍坊专业网站建设价格低专业的天津网站建设

前端问题合集:VueElementUI 1. Vue引用Element-UI时,组件无效果解决方案 前提: 已经安装好elementUI依赖 //安装依赖 npm install element-ui //main.js中导入依赖并在全局中使用 import ElementUI from element-ui Vue.use(ElementUI)如果此…

wordpress 不能换主题东莞网站优化教程

『Postman入门万字长文』| 从工具简介、环境部署、脚本应用、Collections使用到接口自动化测试详细过程 1 Postman工具简介2 Postman安装3 Postman界面说明4 一个简单请求4.1 请求示例4.2 请求过程 5 Postman其他操作5.1 import5.2 History5.3 Environment5.4 Global5.5 其他变…

免费网站的软件网站开发任务需求书

Mysql 数据库是所有软件体系中最核心的存在 DBA 1.1什么是数据库 数据库(DB,DataBase) 概念:数据仓库,软件,安装在操作系统上(window,linux...) 作用:存…

十大中国网站制作门户网站英文

文章目录一、 编辑配置文件1.1. 进入tomcat的conf目录1.2. 编辑tomcat-users.xml文件1.3. 添加配置信息二、 配置说明三、 启动tomcat服务3.1. 启动tomcat3.2. 浏览器访问3.3. 点击Manager App访问4033.4. 编辑配置文件3.5. 注释value部分3.6. 浏览器再次请求四、新建任务&…

网上做论文的网站软件工程师是做什么的

一.DDT简介 Data Driven Testing,数据驱动,简单来说就是测试数据的参数化 Python数据驱动模块DDT,包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据) 通常情况下,data中的数据按照一个参数传递给…

什么情况下需要建设网站安卓手机网页视频怎么下载

多线程中,锁用于确保同一时间只有一个线程可以访问共享资源,从而避免并发访问导致的数据不一致或者竞争条件等问题。 常见的锁有两种:互斥锁和读写锁。互斥锁的作用是保护共享资源,同时只允许一个线程访问,其他线程需…

店铺外卖网站怎么做wordpress网站源码分享

目录 一、协同过滤(Collaborative Filtering, CF)1. 基于用户的协同过滤2. 基于物品的协同过滤 二、深度学习在推荐系统中的应用1. 深度学习模型的优势2. 深度学习在推荐系统中的应用实例 三、总结与展望 推荐系统是现代信息处理和传播中不可或缺的技术&…

精品课程网站的建设初中做网站的软件

文章目录 从零开始学Go web——第一天一、Go与web应用简介1.1 Go的可扩展性1.2 Go的模块化1.3 Go的可维护1.4 Go的高性能 二、web应用2.1 工作原理2.2 各个组成部分2.2.1 处理器2.2.2 模板引擎 三、HTTP简介四、HTTP请求4.1 请求的文本数据4.2 请求方法4.2.1 请求方法类型4.2.2…

盐步网站制作开网页慢

陆家建伟国际汽车城,均价 7500 元/㎡美吉特家居广场,均价 17000 元/㎡美吉特灯都,均价 17000 元/㎡花桥绿地象屿苏河公园,均价 22950 元/㎡凯德都会新峰,均价 21500 元/㎡越洋国际,均价 18000 元/㎡浦西玫瑰…

深圳网站建设定制开发服务简洁的企业网站

个人主页:仍有未知等待探索-CSDN博客 专题分栏:C_仍有未知等待探索的博客-CSDN博客 目录 一、C关键字 二、命名空间 1、区别 1. C语言 ​编辑 2. C 2、命名空间定义 3、命名空间的使用 三、C输入&输出 四、缺省参数 五、函数重载 六、引用 …

旅游管理网站业务模块东莞关键词自动排名

Intellij 的Java/安卓工具链有着一种不可持续性,这种不可持续性体现在多个方面。 首先是不可持续运行。IDEA 使用时间越长,内存占用越大,从不主动释放。运行时间越长,日志越多,从不主动清理。 然后是不完整的开源&am…

云南建设网站首页视频网站如何做弹幕

• 高性能 XBurst 1 CPU,主频1.0GHz • 超低功耗 • 内置LPDDR2(X1600:32MB,X1600E:64MB) • 实时控制核XBurst 0,面向安全管理和实时控制 • 丰富的外设接口 应用领域 • 基于二维码的智能商业 • 智能物联网 • 高端…

wordpress 网站的占有wordpress下载验证码

近日,艾瑞咨询发布《2023年中国保险业数字化转型研究报告》,摩斯隐私计算解决方案被报告入选,并获得“保险业数字化卓越服务商”奖。 蚂蚁摩斯是隐私计算行业的领先布局者:早在2017年,蚂蚁集团启动了隐私计算项目&…

爱企业 查询怎么来自己做网站优化

视频哈工大李治军老师:https://www.bilibili.com/video/BV1d4411v7u7?p12 参考文档:https://blog.csdn.net/SakuraA6/article/details/108810916 学长在我大一推荐我看,p12和p13的内容真的有那么难吗,现在已经是我看的第三遍了还…

专业做甜点的网站手套外包加工网

aconda 是做什么用的这里就不说了,一般玩Python的都知道这东西,最早接触这东西是因为它把NVIDIA中cuda计算和Python互连的一个库拿下了,是买下来了还是专业,还是唯一合作的也就记不清了,那就是 numba , 那些年头Python…

微网站建设报价方案专业的制作网站开发公司

题目 给你两个单词 w o r d 1 word1 word1 和 w o r d 2 word2 word2, 请返回将 w o r d 1 word1 word1 转换成 w o r d 2 word2 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符 方法—动…

做360网站中保存的图片存在哪里的红尘直播

一.有两角夹一边分别相等的两个三角形全等 数学证明: 设△ A B C 与△ A 1 B 1 C 1 ∠ B ∠ B 1 , ∠ C ∠ C 1 , B 1 C 1 B C 设△ABC与△A_1B_1C_1∠B∠B_1,∠C∠C_1,B_1C_1BC 设△ABC与△A1​B1​C1​∠B∠B1​,∠C∠C1​,B1​C1​BC ①移动 ∠ B 1 与 ∠ B 重合 , 边 B…

最新网站开发工具可以用wordpress的什么文件大小

开源最前线(ID:OpenSourceTop) 猿妹综合整理项目地址:https://github.com/SaekiRaku/vscode-rainbow-fart最近,Github上有一个名为Rainbow Fart的VSCode 插件被玩坏了,有了这个插件,程序员鼓励师这个物种就要灭绝了。为…