IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c语言笔记 -> 正文阅读

[C++知识库]c语言笔记

????????

1丶文件包含

????#include?把一个头文件导入到当前文件中

????????<>?""

????????系统通过环境变量指定头文件的加载路径

????????还可以通过编译参数-I?/path?指定头文件的加载路径??优先级最高

2丶宏常量

????#define?宏名?字面值数据(不加分号)

????如果在代码中使用了宏,在预处理时会把所有的宏替换成宏名后面的字面值数据

????有点:提高代码可读性丶提高可扩展性(可批量修改)丶提高安全性(相较于变量)丶还可以和case配合使用(case后面只能跟常量)

????注意:宏名一般全部大写(全局变量首字母大写),末尾不要加分号,不能直接换行(需要使用续航符\)

????????预定义的宏:

????????????__func__

????????????__FILE__

????????????__DATE__

????????????__TIME__获取时间

????????????__LINE__获取该宏所在行号

3丶宏函数

????#define?FUNC(arg)??arg*10

????不是真正的函数,就是带参数的宏,使用宏函数的位置会先替换成宏函数后面的代码,然后根据提供的参数替换掉对应参数的位置

????注意:可以使用续航符和大括号来保护代码

????二义性:由于宏所处的位置或参数的不同可能导致宏函数有多种解释,这就叫宏的二义性

????????????可以在最外层加小括号,每个参数都加小括号,降低产生二义性的可能,不要在宏中使用自变运算符

????运算符:

????????#?把宏函数的参数变成字符串

????????#define?FUNC(arg)??#arg

????????printf("%s",FUNC(123));

????????##?合并两个参数变成标识符

4丶条件编译

????根据条件来决定代码是否参与最终编译

????#if/#elif/#else/#ifdef/#ifndef/#endif

????头文件卫士:防止头文件重复包含

????#ifndef?FILENAME_H

????#define?FILENAME_H

????#endif

????版本控制:

????????#if?VERSION?>=3

????????#elif?VERSION?>=2

????????#elif?VERSION?>=1

????????#else?

????编译器判断

????????#if?__cplusplus

????????????printf("c++编译器\n");

????????#else

????????????printf("c编译器\n");

????????#endif

5丶常考的笔试面试题

????定义一个宏表示100年有多少秒,忽略闰平年问题

????#define?SEC?(3600*24*365*100)u

????在类型重定义时#define和typedef的区别

????在定义变量时#define与const的区别

????宏函数与普通函数的区别

????

头文件中应该写什么:

????问题:头文件可能被任何的源文件包含,意味着头文件的内容会在多个目标文件中存在,合并时要保证不能冲突

????重点:头文件中只能编写声明语句,不能有定义语句

????????全局变量的声明可以写??extern?int?num;

????????函数声明

????????宏常量

????????宏函数

????????typedef??类型重定义

????????结构体丶联合丶枚举的类型声明

头文件的编写规则:

????1丶为每个.c文件写一份.h文件,.h文件是对.c文件的说明

????2丶如果需要使用某个.c文件中的变量丶函数丶宏丶结构体...只需要吧该.c文件的.h文件导入即可

????标准库中文件编译好的.o文件已经在默认添加的lib.so中,所以不用编译链接

????3丶.c文件也需要导入他的.h文件,目的是为了声明和定义一致

头文件的相互包含:

????假如a.h包含了b.h,b.h又包含了a.h,这种情况叫做头文件的相互包含,会导致编译错误

????当确认变量丶函数名已经定义且导入,但是依然报错:未定义?xxx,先考虑头文件卫士写错,再考虑是否是头文件相互包含

????解决方法:从a.h中把需要用到的b.h的内容提取出来,从b.h中把需要用到的a.h的内容提取出来,放入新编写的c.h(.h并不一定有.c)

makefile

????makefile是一系列编译指令组成的可执行文件,也叫编译脚本

????在终端执行make命令就会自动执行makefile文件中的编译指令,他可以根据文件的修改时间来判断哪些文件需要编译,哪些不需要编译,根据依赖情况判断编译顺序,从而提高编译效率

????1.?如果这个工程没有编译过,那么我们的所有?c?文件都要编译并被链接。

????2.?如果这个工程的某几个?c?文件被修改,那么我们只编译被修改的?c?文件,并链接目标程序。

????3.?如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的?c?文件,并链接目标程序。

????一个最简单的makefile脚本:

????执行文件:依赖

????????编译指令

????被依赖的目标1:依赖

????????编译指令

????????...

????clean:

????????rm...

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:03:37  更:2021-08-09 10:04:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 1:32:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码