首页 > 知识点讲解
       预处理指令
知识路径: > 嵌入式系统软件基础知识 > 嵌入式系统程序设计 > 嵌入式程序设计语言 > 嵌入式C/C++程序设计要求 > C程序设计基础 > C程序基础 > 
被考次数:6次     被考频率:中频率     总体答错率:50%     知识难度系数:     
考试要求:掌握      相关知识点:28个      
        在C程序中以#开头的行被称为预处理指令,这些指令是ANSI C统一规定的。编程时可使用预处理命令来扩展C语言的表示能力,提高编程效率。对C源程序进行编译之前,首先由预处理器对程序中的预处理指令进行处理。
        文件包含#include、宏定义#define、条件编译#ifdef、#ifndef是常用的预处理命令,在头文件assert.h中定义宏assert(断言),用于测试表达式的值,若表达式的值为0,则显示错误信息并终止程序的运行。
               宏定义
               在C程序中用好宏定义可以提高程序的可移植性、可读性,减少出错。对于嵌入式系统而言,为了达到性能要求,也常用宏作为一种代替函数的方法。例如,用宏求解两个数据对象的较小者。
               
               再如,用#define声明一个常数,忽略闰年情况下表示一年有多少秒。
               
               通过使用预定义宏可以返回程序的某些状态,以方便交叉编译和调试,每个预定义宏的名称一两个下画线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义。例如,用_FUNC_打印函数名、_LINE_打印行号,以定位程序中打印该信息的函数和位置。常用的几个预定义宏如下。
               _DATE_当前源文件的编译日期,格式为“Mmm dd yyyy”的字符串字面量
               _TIME_当前源文件的编译时间,格式为“hh:mm:ss”的字符串字面量
               _FILE_当前源文件名称,含路径信息
               _FUNC_当前函数名称
               _LINE_当前程序行的行号,表示为十进制整型常量
               _STDC_若当前编译器符合ISO标准,那么该宏的值为1,否则未定义
               _STDC_HOSTED_(C99)如果当前是宿主系统,则该宏的值为1,否则为0
               条件编译
               编写嵌入式应用程序时经常会遇到一种情况,当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句,这时就需要使用条件编译。条件编译命令最常见的形式为:
               
               其作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2,其中#else部分也可以没有。
               在所有的预处理指令中,#pragma最为复杂,其作用是设定编译器的状态或者是指示编译器完成一些特定的动作,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。#pragma pack有多种形式,#pragma pack(n)表示变量以n字节对齐。
               在网络程序中采用#pragma pack(1)(即变量紧缩),可以减少网络流量以及兼容各种系统,避免由于系统对齐方式不同而导致的解包错误。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有