C语言中一些术语的梳理_持续更新
关键字、标识符、宏、预定义、预处理、编译、替换、预处理指令、
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
标识符:
标识符(identifier)是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。标识符通常由字母和数字以及其它字符构成。
标识符就是程序员自己规定的具有特定含义的词,比如类名称,属性名称,变量名等。
预定义标识符:
每个C语言的字要么归为关键字,要么归为标识符。
标识符分为用户标识符和预定义标识符;
预定义标识符是C语言中系统预先定义的标识符,如系统类库名、系统常量名、系统函数名。预定义标识符具有见字明义的特点,如函数“格式输出”(英语全称加缩写:printf)、“格式输入”(英语全称加缩写:scanf)、sin、isalnum等等。预定义标识符可以作为用户标识符使用,只是这样会失去系统规定的原意,使用不当还会使程序出错。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
宏
#define 标识符 字符串
其中的标识符就是所谓的符号常量。也称为宏名。
预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。
宏名可以用户自定义,但标准头文件中有一些预定义的宏。
宏还分为两种:类对象宏(object-like marco)和类函数宏(function-like marco)
掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。
类对象宏定义的组成
#define PX printf(“x is %d.\n”,x)
预处理指令 宏 替换体
类函数宏:
#define MEAN(X,Y) (((X)+(Y))/2)
宏 宏参数 替换体
宏的好处:可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。可移植性。
预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
预定义宏
_ _DATA_ _ 预处理日期(“Mmm dd yyyy”形式的字符串字面量,如 Nov 23 2013);
_ _FILE_ _ 表示当前源代码文件名的字符串字面量
_ _LINE_ _ 表示当前源代码文件中行号的整型常量
_ _STDC_ _ 设置为1时,表示遵循C标准
_ _STDC_HOSTED_ _ 本机环境设置为1;否则设置为0
_ _STDC_VERSION_ _ 支持C99标准,设置为199901L;支持C11标准,设置为201112L
_ _TIME_ _ 翻译代码的时间,格式为“hh:mm:ss”
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
一些术语待总结和理解:
命令行参数
泛型、泛型选择表达式
内联函数、减少函数调用开销
_Noreturn函数
#pragma
C11、C99、ANSI C、UNIX C
C库
堆和栈的概念
stdarg.h 函数可变参数、变参宏
常见的数据形式:队列、列表、链表、二叉树、堆和栈
ADT 抽象数据类型
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
C语言中一些术语的梳理_持续更新的更多相关文章
- iOS中容易混淆的知识点(持续更新中)
1.成员变量和属性的区别 @interface Person : NSObject { NSString *_sex; } @property (nonatomic, copy) NSString * ...
- C#、Java中的一些小知识点总结(持续更新......)
前言:在项目中,有时候一些小的知识,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小知识点,以备用,并持续更新...... 1.禁用DataGridV ...
- C语言中的常用函数_持续更新
isspace函数: 背景:之前遇到scanf()输入时会把换行符留在输入队列的情况,如果下次要用到getchar(),但是会导致其先返回这个我们不需要的换行符:从而导致不希望出现的行为: 说明:检查 ...
- 某人在企业中遇到的Spark问题记录[持续更新]
https://github.com/ssg-7max/ssg 目前 ssg内公司内部 spark streaming 处理数据源是kafka 目前遇到最大的问题是,会延迟,例如我们配置1分钟让窗口计 ...
- 以.net core重构原有.net framework过程中的一些API变更记录(持续更新)
1)Type.IsGenericType类似属性变更 以下是.net framework 4.5中Type抽象类中泛型类型的几个个属性,用于泛型类型的相关信息判断: 以下是.net core(nets ...
- MySQL使用过程中的报错处理(持续更新)
一.数据库初始化 1.Percona的MySQL 5.6.20版本数据库初始化 初始化命令(MySQL 5.6版本不适用mysqld命令进行初始化) ./scripts/mysql_install_d ...
- Spring配置文件中的那些标签意味着什么(持续更新)
前言 在看这边博客时,如果遇到有什么不清楚的地方,可以参考我另外一边博文.Spring标签的探索,根据这边文章自己来深入源码一探究竟.这里自己只是简单记录一下各标签作用,每个人困惑不同,自然需求也不一 ...
- dubbo初认知(dubbo和springCloud关系,在微服务架构中的作用等)(持续更新中)
一:dubbo是什么? dobbuo是阿里开源的一个高性能优秀的服务框架, 可通过高性能的 RPC 实现服务的输出和输入功能,使得应用可以和 高性能的rpc实现输入和输出的功能,可以了 Spring ...
- 个人在 laravel 开发中使用到的一些技巧(持续更新)
1.更高效率地查询:使用批量查询代替 foreach 查询(多次 io 操作转换为一次 io操作) 如果想要查看更详尽的介绍,可以看看这篇文章 什么是 N+1 问题,以及如何解决 Laravel 的 ...
随机推荐
- C语言学习笔记--动态内存分配
1. 动态内存分配的意义 (1)C 语言中的一切操作都是基于内存的. (2)变量和数组都是内存的别名. ①内存分配由编译器在编译期间决定 ②定义数组的时候必须指定数组长度 ③数组长度是在编译期就必须确 ...
- 环境变量,include搜索路径,lib库搜索路径
环境变量 系统环境变量 我们知道,我们经常要设置一些环境变量,系统环境变量我们非常容易理解.其实我们在windows中经常容易接触.其实环境变量是一个非常广泛的一个概念,它与web应用程序中的web. ...
- 百度Apollo解析——2.log系统
Apollo中的glog 在Apollo中google glog 被广泛使用,glog 是 google 的一个 c++ 开源日志系统,轻巧灵活,入门简单,而且功能也比较完善. 1. 安装 以下是官方 ...
- 03 MD5加密、Base64处理
1 什么是MD5 信息摘要算法,可以将字符进行加密,每个加密对象在进行加密后都是等长的 应用场景:将用户密码经过MD5加密后再存储到数据库中,这样即使是超级管理员也没有能力知道用户的具体密码是多少:因 ...
- Excel VBA 若要在64位系统上使用,则必须更新此项目中的代码,请检查并更新Declare语句,然后用PtrSafe属性标记它们
在Office 2010 32位上开发的Excel VBA系统,迁移到Office 2010 64位下面,打开后使用,报下面错误: 解决办法: 在Declare 后面加PtrSafe 进行标记
- Linux 使用静态库注意事项
1. 静态库一定要放在生成文件后面 gcc main.c -o main libhello.a 2. 使用静态库时一定要连接所有用到的静态库 gcc main.c -o main liba.a lib ...
- Amazon S3 云服务
一.简介 Amazon Simple Storage Service (S3) 是一个公开的服务,Web 应用程序开发人员可以使用它存储数字资产,包括图片.视频.音乐和文档. S3 提供一个 REST ...
- .replace(/-/g,"/")的用法
/-/g正则表达式 g 代表 global 全部替换 var str1 ="2012-08-12 23:13"; str1 = str1.replace(/-/g,& ...
- 数据结构 station
问题描述 一天,小 L 突然对列车的进出站问题产生了兴趣,如下图所示:列车只能从 A 进站,或从 B 出站.列车从 A 进站,进站顺序为 1, 2, 3, 4, 5列车从 B 出站,出站顺序为 5, ...
- 数据库(学习整理)----6--Oracle如何快速备份和多次备份数表数据
1.说明: 这里假设一种应用场景! 假设,银行系统中有大量的数据需要及时备份,如何才能快速高效呢! 条件需求: (1).不能设置同步锁(设置的会影响银行正常业务进行!使得银行系统处于维护状态,这是不 ...