文档章节

C语言-预处理指令

盘盘的灰灰
 盘盘的灰灰
发布于 2016/08/04 22:50
字数 937
阅读 3
收藏 0
  • 预处理指令的特点

1). 都是以#开头.

2). 预处理指令都是在编译之前执行.

3). 预处理指令后面都没有分号.

  •  宏定义.

1). 它是1个预处理指令.所以它在编译之前执行.

2). 作用: 可以为1段C代码定义1个标识.如果你要使用这d段C代码.那么你就使用这个标识就可以了.

3). 语法:

        #define 宏名 宏值

        #define N 10

  • 无论宏值是什么东西,在定义宏的时候,不会去检查语法

    只有当完成了宏替换的时候,才会去检查替换以后,是否符合语法规范.

  • 无法通过赋值符号为宏 改值. 因为宏根本就不是变量.
  • 条件编译指令.

    1). 它是1个预处理指令. 所以在预编译阶段执行.

    2). 作用:

            默认的情况下,我们所有的C代码都会被编译为二进制代码.

            条件编译指令的作用: 可以让编译器只编译指定部分的代码.

  •  条件编译指令和if语句的1个对比

    1).条件编译指令是1个预处理指令.在预处理阶段执行.

           if语句是C代码. 在程序运行的时候执行.

    2). if语句无论如何全部都要被编译为二进制指令.

            条件编译指令: 只会讲符合条件的C代码编译为二进制指令.

    3). 实际上.if语句一定程度上可以换成条件编译指令.

            但是.条件编译指令的条件不能是变量参与.只能是宏.

  • 修饰局部变量

    1). 被static修饰的变量 我们叫做静态变量.

        静态变量是声明在常量区中的.

        当我们执行函数的时候.不会再去执行声明静态变量的那句话.直接就略过.

        并且函数执行完毕之后,静态变量也不会被回收. 直到程序结束的时候才会被回收.

        无论函数执行多少次.静态变量只会有1个.

    2). 与全局变量的区别.

        全局变量可以在所有的函数里面访问.而静态变量只能在定义静态变量的函数中访问.

    3). 什么时候需要将变量定义为静态的呢?

        a. 特点和作用.

           无论函数执行多少次.这个静态变量都只有1份. N次函数共享.

        b. 当你有1个数据.你希望无论函数执行多少次 这个数据只有1份.

        实际上,如果要实现这个效果,也可以直接将这个数据定义成全局变量.

        但是全局变量是被所有的函数共享. 所有的函数都能访问

        而静态变量的特点. 只能在当前函数中访问 并且多次执行只有1个.

   4). extern不能修饰局部变量.

  • 全局变量分为两种.

        a. 内部全局变量.

           使用static修饰的全局变量.叫做内部全局变量.

           这个全局变量就只能在当前模块中访问.

           如果是跨模块访问就无法正确访问.

        b. 外部全局变量.

            使用extern修饰的全局变量.我们叫做外部全局变量.

            这个全局变量就可以在外部的模块中访问.

  • static和extern修饰函数

        1). 被static修饰的函数,只能在这个模块的内部调用,无法跨模块调用.

        2). 被extern修饰的函数,可以跨模块调用.

        3). 函数如果没有写static或者extern那么默认就是extern 外部的.

     

© 著作权归作者所有

共有 人打赏支持
盘盘的灰灰
粉丝 0
博文 31
码字总数 24142
作品 0
深圳
私信 提问
c语言编译预处理和条件编译执行过程的理解

  在C语言的程序中可包括各种以符号#开头的编译指令,这些指令称为预处理命令。预处理命令属于C语言编译器,而不是C语言的组成部分。通过预处理命令可扩展C语言程序设计的环境。 一.预处理...

文艺小青年
2017/10/12
0
0
define看起来很炫酷!C语言基础教程之预处理和宏定义

C语言预处理器 C语言预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C语言预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处...

诸葛青云999
08/19
0
0
C语言基础教程之预定义和宏处理

define看起来很炫酷!C语言基础教程之预处理和宏定义 C语言预处理器 C语言预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C语言预处理器只不过是一个文本替换工具...

这个人很懒什么都没留下
08/18
0
0
C语言 条件编译详解

预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。 在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含...

晨曦之光
2012/03/09
265
0
C语言程序结构「菜鸟入门篇」

C语言程序结构 C Hello World 实例 C 程序主要包括以下部分: 预处理器指令 函数 变量 语句 & 表达式 注释 让我们看一段简单的代码,可以输出单词 "Hello World": 实例 #includeintmain(){...

小辰带你看世界
01/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
46分钟前
1
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
49分钟前
1
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
1
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
1
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部