C语言预处理指令学习笔记

来源:互联网 发布:淘宝最好的店铺 编辑:程序博客网 时间:2024/06/05 19:21
==========================================================================================
                                         预 处 理 指 令
==========================================================================================
1.基本概念


   以“#”开头的都是预处理命令。如包含命令#include,宏定义命令#define等。在源程序中这些命令都放在函数之外,而且一般都放在源文件的前面,他们称为预处理部分。


   所谓预处理是指在进行编译的第一遍扫描(此法扫描和语法分析)之前所做的工作。预处理是C语言中一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分做处理,处理完毕自动进入对源程序的编译。




源程序                            .O        .out
----->预处理(宏替换)----->编译 ----->链接 ----->执行程序 




==========================================================================================


宏的概念及无参宏定义方法


1.宏的概念


    被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。


无参宏的宏名后不带参数。其定义的一般形式为:


                      #define 标识符 字符串


------------------------------------------------------------------------------------------


2.有参宏的定义方法


带参宏定义的一般形式为:


              #define 宏名(形参表) 字符串


------------------------------------------------------------------------------------------


3.有参宏使用注意事项


(1).宏的形参之间可以出现空格,但是宏名和形参之间不能出现空格;
(2).在带参宏定义中,形参不分配内存单元,因此不必作类型定义。而宏调用中的实参有具体的值,要用他们去代换形参,因此必须做类型说明。这是与函数中的情况不同的。在函数中,形参和实参是两个不同的量,各有自己的作用域,调用时要把实参值赋予形参,进行“值传递”。而在带参宏中,只是符号代换,不存在值传递的问题。


==========================================================================================


typedef和#define的区别


typedef int* TINT;
#define int* INT*


在主函数中:        TINT a,b;    //相当于 int*a; int*b;
                    INT* a1,b1;  //相当于 int*a1; int b;


有区别。一个是别名,一个是简单替换。


==========================================================================================


条件编译:


发生在预处理阶段,在编译之前做的事情


核心:根据条件,编译指定的代码


条件不同,编译的部分也不同,生成的目标文件(.o)大小也不一样。


------------------------------------------------------------------------------------------


1. #if-#else条件编译指令


第一种形式的格式为:


#if 常量表达式
    程序段1
#elif 常量表达式
    程序段2
#else 
    程序段3
#endif


2. #ifdef;
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 2岁着凉了呕吐怎么办 2岁宝宝着凉呕吐怎么办 两岁宝宝偏矮怎么办 2岁宝贝吐没精神怎么办 11个月的宝宝吐怎么办 二岁的宝宝吐了怎么办 十个月小孩吐了怎么办 10个月宝宝呕吐怎么办 小孩又拉又吐的怎么办 小孩子不吃饭呕吐拉肚子怎么办 小孩发烧后又吐怎么办 11个月宝宝吐了怎么办 11个月宝宝拉肚子怎么办 2岁宝宝反复呕吐怎么办 1岁半幼儿拉肚子怎么办 宝宝打嗝呕吐胃难受怎么办 3岁宝宝发烧还吐怎么办 孩子喝水都吐怎么办啊 宝宝吃多了呕吐怎么办 3岁宝宝吐怎么办才好 儿童受凉肚子疼发热呕吐怎么办 两岁宝宝半夜呕吐怎么办 两岁宝宝吐了怎么办 2岁宝宝发烧吐怎么办 2岁多宝宝呕吐是怎么办 2周岁宝宝中暑了怎么办 2岁半宝宝着凉呕吐怎么办 3岁宝宝吐了几次怎么办 一岁宝宝恶心吐怎么办 9个月宝宝一直吐怎么办 晚上冻着了呕吐怎么办 2岁宝宝一直吐怎么办 两岁宝宝门牙龋齿怎么办 两岁宝宝得龋齿怎么办 两岁宝宝长龋齿怎么办 宝宝2岁不吃饭怎么办 两岁宝宝总是吐怎么办 3岁儿童受凉呕吐怎么办 两岁宝宝四天没拉大便怎么办 两岁宝宝发烧吐怎么办 四岁宝宝吐了怎么办啊