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

网站开发与设计实验报告总结恢复被百度k网站 关键词收录

网站开发与设计实验报告总结,恢复被百度k网站 关键词收录,湖南网站建设营销推广,wordpress采集vip视频编译预处理 编译预处理就是在编译源代码之前进行的一系列处理#xff0c;将源程序中的一些特殊命令进行展开或处理#xff0c;生成扩展的源代码。这些特殊命令通常以“#”开头#xff0c;占单独的行#xff0c;语句尾部不需要加分号。 宏定义 (#define)是一种常见的编译…编译预处理 编译预处理就是在编译源代码之前进行的一系列处理将源程序中的一些特殊命令进行展开或处理生成扩展的源代码。这些特殊命令通常以“#”开头占单独的行语句尾部不需要加分号。 宏定义 (#define)是一种常见的编译预处理指令用于定义宏实现代码的简化和重用。 文件包含(#include)用于在源文件中引入其他文件的内容方便代码模块化和复用。 条件编译 (#if, #else, #endif等)允许根据条件选择性地编译部分代码提高代码的灵活性。 在预处理阶段这些指令会被解释和处理生成经过预处理的源代码然后再经过编译、汇编、链接等步骤生成最终的可执行文件。这个过程有助于提高代码的可维护性和可移植性。 书写格式 以“#”开头、占单独行、语句尾不加分号。 这样的规范有助于编译器正确解释和处理这些指令同时也使得代码更加清晰易读。这样的一致性规范有助于维护代码时的可读性和可理解性。 宏定义的例子 // 定义常量#include stdio.h#define MAX_SIZE 100 #define PI 3.1415926// 简化代码 #define SQUARE(x) ((x) * (x)) #define MAX(a, b) ((a) (b) ? (a) : (b))#define DEBUG //只要定义了该宏 DEBUG_PRINT就会起作用 没有定义则不起作用 // 字符串拼接//#define CONCAT_STR(a,b) a##b dev平台用不了 linux未测试 #define CONCAT_STR(a,b) a b// 条件编译 #ifdef DEBUG#define DEBUG_PRINT(msg) printf(Debug: %s\n, msg) #else#define DEBUG_PRINT(msg) #endifint main(void) {printf(5的平方是%d\r\n,SQUARE(5));printf(MAX(2,3)返回较大的一个数是%d\r\n,MAX(2,3)) ;DEBUG_PRINT(调试信息); printf(%s\r\n, CONCAT_STR(你好, World)); // 这里会被展开为 printf(%s\r\n, 你好, World); } 这里踩到了一个坑… dev里这个##符号竟然不能使用看了这个博主的文章才明白 https://blog.csdn.net/leon1741/article/details/78149881致谢致敬 运行结果 宏定义使用注意事项 使用宏定义时需要注意一些事项以确保代码的可读性和正确性。以下是一些宏定义的注意事项 括号的使用 在宏定义中为了避免优先级问题通常在宏的参数和整体表达式外部都使用括号。例如 #define SQUARE(x) ((x) * (x))这样可以确保在使用时不会出现预期之外的行为。 避免副作用 在宏中避免使用具有副作用的表达式因为宏是简单的文本替换可能导致意外的行为。 // 避免这样的宏定义 #define INCREMENT(x) x使用大写字母 为了与变量和函数名区分宏的名称通常使用大写字母。 #define MAX_SIZE 100多行宏的注意 如果宏跨越多行确保在每行的末尾使用反斜杠 \ 连接以避免语法错误。 #define PRINT_SUM(a, b) \do { \int sum (a) (b); \printf(Sum: %d\n, sum); \} while(0)参数的使用 宏参数的使用要小心确保在宏展开时不会导致预期之外的结果。 // 不要这样使用可能导致问题 #define SQUARE(x) x * x条件编译 在使用条件编译时确保相关的宏定义和取消定义都是正确的。 #ifdef DEBUG// ... #endif总体来说清晰、简洁、避免副作用是设计宏定义时的关键原则。良好的宏定义可以提高代码的可读性和可维护性。 在单片机中可以使用预编译来区分代码版本 如果定义了REG_CODE 这个宏且其结果是1那么就是寄存器版本代码否则就是库函数版本代码 void LED_Config(void) {#if (REG_CODE)RCC-AHB1ENR | 12; //GPIOC的时钟开关GPIOC-MODER ~(32*4);//把89位清00 PC4GPIOC-MODER | (12*4);//只是把第89位置01GPIOC-MODER ~(32*5);//把10 11位清00 PC5GPIOC-MODER | (12*5);//只是把第89位置01GPIOC-MODER ~(32*6);//把11 12位清00 PC6GPIOC-MODER | (12*6);//只是把第89位置01GPIOC-MODER ~(32*7);//把89位清00 PC7GPIOC-MODER | (12*7);//只是把第89位置01GPIOC-OTYPER ~(14); //推挽模式//0xFFFF FFEF GPIOC-OTYPER ~(15);GPIOC-OTYPER ~(16);GPIOC-OTYPER ~(17);//假设输出状态 灯的开关GPIOC-ODR | (14)| (15)|(16) |(17); //默认全关printf(寄存器代码...\r\n);#elseprintf(LED库函数代码...\r\n);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode GPIO_Mode_OUT;GPIO_InitStruct.GPIO_OType GPIO_OType_PP;GPIO_InitStruct.GPIO_Pin GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStruct.GPIO_PuPd GPIO_PuPd_NOPULL;GPIO_InitStruct.GPIO_Speed GPIO_High_Speed;GPIO_Init(GPIOB,GPIO_InitStruct);#endif}至此预编译相关的知识点就介绍完了。
http://www.yutouwan.com/news/393043/

相关文章:

  • 网站模块建设外发加工网有哪些
  • 做返利网站能赚钱么响应式网站建设公司
  • 国内做视频网站需要啥宜宾团购网站建设
  • 做外贸比较好得网站爱站网络科技有限公司
  • 我的网站织梦wordpress 手机版域名
  • 高端品牌男鞋有哪些百度seo在哪里
  • 做建筑机械网站那个网站好专门做app网站
  • 永久免费建站空间领取免费空间
  • 马鞍山网站建设制作专门做男装的网站
  • 国外 网站有做验证码吗wordpress 调用备案号
  • 鹤壁建设网站推广公司电话新零售平台软件系统
  • 今天开始做女神免费网站个人网页制作成品免费开源代码
  • 视频号直播怎么引流怎样网站seo
  • 做外贸常用网站公司做网站计入那个科目
  • 网站运营的重要性jsp网站开发的两种模式
  • 简单网站建设优化教育机构还能补课吗
  • 广东建的电商网站叫啥做网站要有数据库么
  • 网站开发与应用专业英文wordpress转中文
  • 百度网页跳转app泉州关键词优化软件
  • 网站建设xm37用小程序做网站
  • 好的网站 具备五道口网站建设
  • 软件开发合同样本郴州网站seo优化
  • 北京海淀区区长重庆网站优化排名软件方案
  • 想建立一个网站怎么做网站优化指标
  • 郑州博文it培训 网站开发 平面乙方宝
  • 免费建站模板阿里云的网站接入方式
  • 网站与网站自动跳转代码wordpress需要会php
  • 简单网站建设论文总结前端是做网站的吗
  • 平安河南建设网站阿里云服务器在哪里
  • 扬中网站优化dw网页制作教程合集