首页 > 其他 > 详细

最最最最最最最最基础的C---预处理命令和typedef定义

时间:2015-11-19 07:22:47      阅读:322      评论:0      收藏:0      [点我收藏+]

ANSIC标准规定在C源程序中加入一些“预处理命令”,用来改进程序设计环境,提高编程效率。这些命令不是C语言的组成部分,不能直接对它们进行编译。

C与其他高级语言的一个区别:可以使用预处理和具有预处理的能力

 

预处理功能:宏定义,文件包含,条件编译,这些命令均以符号“#”开头

宏定义

不带参数的宏定义:用一个指定的标识符(即名字)来代表一个字符串

        一般形式:#define 标识符  字符串

几点说明:1.标识符称为宏名,在预编译时将宏名替换成字符串的过程称为“宏展开”

          2.宏名一般用大写;宏定义不是C语句,不必在行末加分号

          3.宏定义是用宏名替换一个字符串,不做正确性检查,但是在“宏展开”会发现错误并报错

          4.#define范围是定义命令道源文件结束,但是可以用#undef命令终止宏定义的作用域

          5.宏定义与变量含义不同,不分配内存空间

 

带参数的宏定义:不止要进行简单的字符串替换,还要进行参数替换

      一般形式:#define 宏名(参数表) 字符串

      注:宏名和带参数的括号之间不应该加空格;否则将空格以后的字符都作为替代字符串的一部分

文件包含

文件包含:指一个源文件可以将另一个源文件的全部内容包含进来。

  一般形式:#include "文件名" 或#include <文件名>

#include <stdio.h>//引用头文件

#include "stdio.h"//<>,""区别:<>从系统目录下寻找文件,找不到报错;""从项目目录下寻找文件,找          不到就到系统目录下查找,再找不到就报错。<>引用系统文件;""引用自己写的文件。引用其他项目目录下的文件格式".../.../..."

条件编译

条件编译:满足某条件时对某一组语句进行编译,不满足就编译另一组语句

   形式一:#ifdef标识符

           程序段1

           #else

           程序段2

           #endif

     作用:若指定的标识符已经被#define命令定义过,则在程序编译阶段编译程序段1,否则编译程序段2(程序段可以是语句组,也可以是命令行)

  

   形式二:#ifndef标识符

           程序段1

           #else

           程序段2

           #endif

      作用:若标识符未被定义过,则编译程序段1,否则编译程序段2

   

   形式三:#if标识符

           程序段1

           #else

           程序段2

           #endif

      作用:当指定的表达式值为真(非零)时就编译程序段1,否则编译程序段2

 

 

用typedef命名已有类型(不属于预处理命令的部分,只是与宏定义进行比较

typedef命名已有类型

用typedef声明新的类型来代替已有的类型名

eg:typedef  int  INTEGER;  指定用INTEGER代替int类型

 

注:1.typedef可以声明各种类型名,但是不能用来定义变量

    2.typedef只是对已存在的类型指定一个新的类型名,并没有创造新的类型

    3.typedef有利于程序的通用与移植

 

typedef与#define区别:typedef int  COUNT; &   #define COUNT  int;

                       作用都是用COUNT代替int,但是#define是在预编译时作简单的字符串替换;而typedef是在编译时给int类型重新命名,然后用COUNT去定义变量


本文出自 “毕业---觉醒---行走” 博客,请务必保留此出处http://tjy888.blog.51cto.com/5576345/1714422

最最最最最最最最基础的C---预处理命令和typedef定义

原文:http://tjy888.blog.51cto.com/5576345/1714422

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!