苏文昊的嵌入式开发学习笔记总目录
开发环境与开发工具
Ubuntu系统相关
Ubuntu操作系统在Vmware中的安装、常用操作、最基础的知识
Ubuntu系统中,用Text Editor打开编辑文件 但是修改后无法保存,怎么办?
解决Ubuntu在VMware关机时,老是一个光标在那里闪动几分钟,才能关机的问题
怎么样能使Ubuntu的文件浏览器显示当前目录的路径,而不是只显示一个文件名?
首次打开发板厂家提供的Ubuntu-18.04镜像后,该做哪些事?
Vmware的网络适配器的NAT模式和桥接模式有何区别?如何给Uubunt系统添加桥接网卡?
在 Ubuntu 中 make 是否是系统自带的?怎么样查看Linux系统中是否有make?
在Ubuntu中,某个文件的右下角有一把锁的标志是什么意思?
Windows系统相关
串口通讯相关
网卡通信相关
设置IMX6ULL开发板的网卡IP的两种方法(临时生效和永久有效两种方法)
IMX6ULL开发板、PC机上的USB网卡、VMware中的Ubuntu的桥接网卡三者互Ping设置及设置
IMX6ULL开发板挂载 Ubuntu 的 NFS 目录,并以交叉编译得到的hello程序进行测试
代码阅读书写工具(IDE)
Visual Studio Code(VS code-VScode)安装及使用经验、技巧汇总
代码同步工具
嵌入式开发之使用 FileZilla 在 Windows 和 Ubuntu 之间传文件
Linux系统相关
Linux常用命令(删除、关机、解压、复制(详解cp命令)、移动…
Linux中用pwd命令可以显示当前路径,请为pwd来自于什么的缩写?
Linux编译Kernel时的文件zImage、文件dtb(dtbs)、核心模块分别是什么东西?
怎么样理解“在Linux嵌入式开发中,一切皆是文件。”这句话?
在Linux嵌入式编程中,与内存相关的堆(Heap)和栈(Stack)有什么区别?Linux中堆、栈、数据段(存储全局变量)、代码段的内存布局是怎么样的?各种变量的分配区域是怎么样的?
Linux下读取Windows下保存的文件,报错信息中出现“^M“时如何解决?【由于Windows和Linux的换行方式不同造成的-提供两种转换方式】
Linux的源码在Windows下解压时提示文件名字相同(重名)的原因及解决办法
Linux打开一个文件并读取内容的详细流程【inode结构体、fd文件描述符、struct file
结构体、一个打开普通文件和一个打开设备文件的详细流程分析】
Linux的内核空间和用户空间是怎么回事儿?驱动程序位于内核空间中,与用户空间的数据传递通过copy_to_user和copy_from_user进行;Ring 0和Ring 3是啥意思?
Linux的proc目录与什么有关?【以及它里面的文件各自记录着什么信息】
Linux系统的ioremap()函数详解【包含对页对齐地址的详解】
Linux的内核空间中的日志打印函数printk的详解;如果设置printk
函数的默认日志级别和是否输出到终端控制台
与Linux的模块(module-MODULE)相关的知识汇总
为什么自己写的两个Linux模块,前一个加载时提示“loading out-of-tree module taints kernel”,后一个加载时就没有提示了?
虽然很多时候阻塞和休眠的外在效果类似,但是我觉得还是该注意下二者的区别
详解Linux的交互式命令行(Shell、TTY子系统、TTY设备、TTY名字的来历、TTY设备文件、几个特殊的TTY设备文件、终端的两个含义、被作为控制台的终端)
为什么命令“echo -e “\033[9;0]“ > /dev/tty0“能控制开发板上的LCD不熄屏?
如何确认Linux嵌入式系统的触摸屏对应的是哪个设备文件(/dev/input/event1)?如何查看系统中所有的输入设备?输入设备的设备文件有什么特点?
如何确认设备文件 /dev/fb0 对应的帧缓冲设备是开发板上的LCD屏?如何查看LCD屏的属性信息?
开发板上Linux系统中的目录 /usr/lib/fonts/ 中的字体文件 msyh.ttc 的介绍【微软雅黑(Microsoft YaHei)】
Linux 的 sysfs 伪文件系统介绍【用户可以通过文件操作与内核交互(如调用内核函数),而无需编写内核代码】
Linux的GPIO子系统(gpiolib)的原理详解【每个GPIO控制器对应于一个gpio_chip结构体】【如何查看每个GPIO控制器的详细情况】【如何利用其操作具体的GPIO口】
Linux系统启动时如何实现驱动程序的加载和应用程序的运行(自启动)【利用脚本/etc/init.d/rcS】
Linux系统的source命令详解(普通形式执行脚本与source方式执行脚本的区别)
进程的控制终端规则详解(打开串口设备文件时的标志位O_NOCTTY的详解、守护进程的概念)
Linux中如果一个可执行程序位于系统的环境变量目录中(比如/bin、/usr/sbin/、/sbin),想找到它的位置可以用which命令来找到
Linux的so文件并不是静态库文件,而是共享库文件(Shared Object),对应于Windows中的动态链接库dll文件,a文件才是静态库文件,并附详细介绍
Linux中的软链接指向同目录中的A文件时,如果这个目录被整体复制到另外的地方,那么复制得到的软链接也指向复制得到的A文件(另附查看一个软链接指向的方法-单独复制一个软链接会怎么样)
怎么样查看Linux的GPIO子系统中已经被占用的GPIO口的状态?
Linux进程管理相关
Linux进程管理之进程的概念、进程列表和详细的查看、进程各状态的含义
Linux进程管理之子进程的创建(fork函数)、子进程与线程的区别、fork函数的简单使用例子、子进程的典型应用场景、父进程等待子进程结束后自己再结束
Linux进程管理之进程间通信的相关知识(映射、管道(Pipe)通信、命名管道(FIFO)、消息队列、信号量、信号)
gcc交叉编译相关
Ubuntu中安装配置交叉编译工具 arm-buildroot-linux-gnueabihf-gcc 并进行测试
Linux系统中的gcc是什么东西?构建工具make的Makefile文件又是什么作用?
gcc命令中的-o参数并不是生成目标文件的意思,而是指定可执行文件的名称;如何生成目标文件;Linux中可执行文件没有exe的后缀
gcc的链接器的相关知识要点(库的书写顺序、搜索库的路径、库的全名…)
Linux系统下交叉编译安装第三库时常用的“./configure“命令介绍(包含对prefix配置参数和make install
时指定的路径的区别)
如何查看Linux的二进制可执行文件是该运行于哪个架构的平台上?【用file命令】
如何检查交叉编译器gcc工具链里是否有某个库(以zlib库和libpng库为例)
如何查看gcc编译器编译时的include头文件搜索路径、各默认路径通常用于存放何种头文件、gcc编译器搜索头文件时不会去搜索默认路径中的子目录怎么办【头文件的目录嵌套】?
从ARM官方获取自己想要的gcc交叉编译工具链接(Arm GNU Toolchain),并在Ubuntu系统中进行配置
Makefile文件的书写
读懂和编写Makefile需掌握的关键基础知识(常用符号、先解析再执行、make命令的第一个动作、规则的概念、目标及伪目标的相关概念、文件更新机制、几个重要的自动化变量等知识)
Linux之运行于用户空间的应用程序的代码的Makefile文件书写【递归编译,带子目录的工程:有顶层Makefile、Makefile.build和子目录中的Makefile】)
关于顶层Makefile文件中的语句obj-y += display/
和子目录Makefile文件中的语句obj-y += disp_manager.o
的理解
有些Makefile文件以“.build”的后缀结尾是怎么回事儿?【Makefile.build文件是怎么回事儿?】
Makefile中使用include语句时要特别注意避免陷入无限循环的死循环中
交叉编译Linux驱动程序和测试程序的Makefile文件解读
U-boot和Linux的构建、移植、部署、烧写相关
Linux编译Kernel时的文件zImage、文件dtb(dtbs)、核心模块分别是什么东西?
编译生成IMX6ULL开发板的Linux内核(Kernel)zImage文件、设备树文件(dtb)、内核模块(ko)文件,编译好后更换掉开发板上之前的
eMMC是什么东西?Buildroot中生成的emmc.img 和 zImage两个文件有何区别?
NAND Flash 和 NOR Flash的名字来历、实现原理、概要介绍和应用上的区别
如何查看:Buildroot所使用Linux的版本号、gcc交叉编译工具所使用的Linux的版本号、开发板上运行的Linux系统的版本号
嵌入式构建工具Yocto中的Build Folder(构建目录)是什么意思?
Linux嵌入式完整镜像烧写到SD卡中的方法(包括对SD卡的介绍)
镜像文件imx-image-full-imx6ull14x14evk-20201209093926.rootfs.wic
的串口终端日志输出记录
百问网(100ask)提供的烧写工具的原理和详解;将自己编译生成的u-boot镜像文件烧写到eMMC中
在Windows系统上利用tftpd64配置TFTP服务并进行测试
如何手动设置u-boot的以太网的IP地址、子网掩码、网关信息、TFTP的服务器地址,并进行测试
u-boot的环境变量设置、保存、汇总与说明【同时对u-boot的环境变量bootcmd
和网络启动(run netboot)方式进行了详细解释】
在开发板上使用netboot的方式启动Linux系统时无法通过NFS网络文件系统挂载根文件系统的解决过程记录
u-boot传递给Linux内核的启动参数bootargs的学习笔记
u-boot和Linux内核的设备树文件在书写时是可以相互参考的
在编译Linux的内核镜像和模块时,必须先编译内核镜像,再编译模块,顺序不可随意调整的原因
运行于u-boot中的Fastboot(FB)协议的详细介绍(快速烧写 eMMC、NAND、UFS 等存储设备的协议)
IMX6ULL运行Linux系统的Bootloader的三个阶段详解(BootROM、SPL、U-Boot)(SPL和U-Boot合成镜像u-boot-dtb.imx
时需要作填充数据处理)
eMMC存储器详解(存储区域结构、EXT_CSD[179]、各分区介绍、主要引脚、命令格式与类型、u-boot对eMMC的管理等)
u-boot中与eMMC/SD卡相关的功能模块“MMC sub system(MMC子系统)”的详细介绍
通过u-boot启动Linux时的根文件系统挂载流程(init进程可能会进行二次挂载)
对NXP提供的BSP里边所使用的u-boot的环境变量bootcmd
的解析
以网络形式启动Linux系统后,通过挂载(mount)的方式,将eMMC存储器中旧的根文件系统所在逻辑2分区格式化,并解压新的根文件系统到逻辑2分区
百问网提供的烧写工具将各镜像文件烧写到eMMC存储器的各脚本的解析
用NXP(恩智浦)提供的IMX6ULL的公板(MCIMX6ULL-EVK)的BSP(FSL Yocto Project Community BSP)来编译生成烧写在SD卡中的完整镜像,并分析运行结果
修改移植FSL Yocto Project Community BSP
用到的u-boot源码,使其能适配百问网(100ask)的开发板
修改移植FSL Yocto Project Community BSP
用到的Linux内核源码并增加触摸屏、蓝牙、wifi的驱动程序,使其能适配百问网(100ask)的开发板
u-boot(Bootloader的后两个阶段)、设备树文件(dtb)、内核镜像(zImage)、根文件系统从烧写存储到eMMC中到完整加载运行的过程与原理详解
嵌入式驱动开发相关
为什么Linux驱动程序模块的C文件末尾要加上MODULE_LICENSE(“GPL“);
嵌入式驱动开发编程中涉及到的重要结构体——文件操作结构体:file_operations的完整定义
以一个实际例子来学习Linux驱动程序开发之“设备类”的相关知识【利用设备类实现对同一设备类下的多个LED灯实现点亮或关闭】
Linux打开一个文件并读取内容的详细流程【inode结构体、fd文件描述符、struct file
结构体、一个打开普通文件和一个打开设备文件的详细流程分析】
Linux驱动程序中文件操作结构体file_operations中定义的底层操作函数常用到的参数struct inode *node、struct file *file是怎么回事儿?
Linux驱动程序中文件操作结构体file_operations中定义的操作函数open、read、write 和 release 等函数都有固定的参数形式和返回值类型,它们何时被调用,各参数意义是?
Linux的内核空间和用户空间是怎么回事儿?驱动程序位于内核空间中,与用户空间的数据传递通过copy_to_user和copy_from_user进行;Ring 0和Ring 3是啥意思?
交叉编译Linux驱动程序和测试程序的Makefile文件解读
Linux驱动学习之第一个驱动程序(HelloWorld-最简单的字符型设备驱动程序-不设计具体的硬件的驱动程序)
Linux系统的ioremap()函数详解【包含对页对齐地址的详解】
Linux驱动学习之第二个驱动程序(LED点亮关闭驱动程序-分层设计思想,使其能适应不同的板子-驱动程序模块为多个源文件怎么写Makefile)
与Linux的模块(module-MODULE)相关的知识汇总
Platform总线设备驱动是如何把设备资源描述结构体(platform_device)与驱动结构体(platform_driver)匹配起来的【函数platform_match()
详解】
Platform总线设备驱动中非常重要的结构体platform_device
的详细介绍【以及如何查看系统中存在的platform_device
结构体的记录文件】
Platform总线设备驱动中非常重要的结构体platform_driver
的详细介绍【以及如何查看系统中存在的platform_driver
结构体的记录文件】
利用Linux的Platform总线设备驱动实现对多个LED的驱动【只是假想对LED进行驱动,并没有实际的硬件操作】【Makefile如何书写能生成多个模块文件】【总线设备驱动的好处】
与Linux的设备树文件(dts)的基础知识【根节点、子节点、标签名、节点名称、&
开头的引用结构、嵌套节点的引用、节点格式的灵活性、禁止节点、命令行基本操作、实际例子等】
修改之前的代码使得利用设备树文件和Platform总线设备驱动实现对多个LED的驱动【只是假想对LED进行驱动,并没有实际的硬件操作】
为什么自己写的两个Linux模块,前一个加载时提示“loading out-of-tree module taints kernel”,后一个加载时就没有提示了?
Linux驱动学习之第三个驱动程序(两个按键的驱动程序-读取按键值)
BSP一般是由处理器芯片制造商提供还是开发板商提供?BSP是如何整合(编译)进内核中的?
利用设备树、Platform驱动总线、Linux的GPIO子系统和开发板的BSP(板级支持包)来实现LED的驱动程序
NXP(恩智浦)官方提供的配置i.MX系列处理器引脚复用和功能的工具“i.MX Pins Tool”的安装及使用说明【我主要用于生成设备树节点描述语句】
利用设备树、Platform总线、BSP、GPIO子系统和Linux的中断处理系统实现第一个中断驱动程序(按键动作为中断源,中断处理函数中打印中断的相关信息-无用户空间的交互)
Linux中断驱动程序之利用线程的“可中断睡眠状态(即线程能被某个事件唤醒)”实现从用户空间读取按键值,其它线程正常运行【函数wait_event_interruptible、等待队列】
虽然很多时候阻塞和休眠的外在效果类似,但是我觉得还是该注意下二者的区别
驱动程序的poll休眠唤醒机制学习记录及示例程序分析(没有涉及具体的硬件操作-poll机制与最初的想象有很大的差别)
使用Linux驱动程序的fasync(文件异步通知机制)向用户空间发送SIGIO信号的学习记录
向文件描述符(fd)对应的文件结构体(struct file)写入阻塞和非阻塞的标志,让驱动程序的操作函数能根据不同的标志作出不同的行为
运行于Linux内核空间的“内核计时器”的使用(用它来去除按键抖动-用内核定时器实现中断下半部的处理)
Linux的中断上半部和中断下半部的概念,并利用任务队列(Tasklet)实现中断下半部的处理
利用Linux的工作队列(Workqueue)实现中断下半部的处理
利用线程化的中断处理来实现中断下半部处理(中断注册的时候同时创建一个用于处理中断下半部的线程)
Linux内核空间用来设置内存映射区域的缓存属性的pgprot_* 系列函数的详细介绍【CPU核心、Cache(高速缓存)、写缓冲器、主存之间的关系;Cache和写缓冲器的详细介绍】
驱动程序中的物理内存通过mmap机制映射到用户空间,用户空间得到虚拟内存地址然后进行相关数据的读写操作
Linux的GPIO子系统(gpiolib)的原理详解【每个GPIO控制器对应于一个gpio_chip结构体】【如何查看每个GPIO控制器的详细情况】【如何利用其操作具体的GPIO口】
设备的名字中经常出现的“Realtek”是怎么回事【中国台湾的Realtek(瑞昱半导体)介绍-Logo为蓝色螃蟹-主营网卡、蓝牙、音频、交换芯片】
Linux 驱动总线中的 ACPI 设备匹配机制是怎么回事儿?【最大特点是设备的自动发现和热插拔性能良好】
设备树相关
u-boot和Linux内核的设备树文件在书写时是可以相互参考的
与Linux的设备树文件(dts)的基础知识【根节点、子节点、标签名、节点名称、&
开头的引用结构、嵌套节点的引用、节点格式的灵活性、禁止节点、命令行基本操作、实际例子等】
NXP(恩智浦)官方提供的配置i.MX系列处理器引脚复用和功能的工具“i.MX Pins Tool”的安装及使用说明【我主要用于生成设备树节点描述语句】
利用设备树、Platform驱动总线、Linux的GPIO子系统和开发板的BSP(板级支持包)来实现LED的驱动程序
利用设备树、Platform总线、BSP、GPIO子系统和Linux的中断处理系统实现第一个中断驱动程序(按键动作为中断源,中断处理函数中打印中断的相关信息-无用户空间的交互)
修改IMX6ULL_PRO开发板的设备树文件使开发板启用UART5(串口5)
IMX6ULL的I2C控制器在Linux的设备树文件中的描述
嵌入式应用开发相关
在Linux的嵌入式开发中,如何确定要操作的帧缓冲设备是第几个实例?即是fb0还是fb1还是fb2…
嵌入式Linux开发中的内存映射函数mmap详解?什么叫内存映射?什么叫对设备的显式和隐式读写操作?什么叫程序的虚拟内存?
IMX6ULL开发板基础实验:Framebuffer驱动程序的简单应用实例代码详细分析
嵌入式应用实例→电子产品量产工具→显示系统的代码阅读和上机测试记录
嵌入式应用实例→电子产品量产工具→触摸屏输入系统的代码阅读和上机测试记录
tslib(触摸屏输入设备的轻量级库)的学习、编译及测试记录
Linux嵌入式系统网络套接字编程中的重要结构体sockaddr_in的介绍
Linux嵌入式系统利用套接字编程(Socket Programming)实现网络通信的基础知识并附对一个简单实例的分析
为什么在网络套接字编程中对于recvfrom()收到的数据的缓存数组要预留一个位置并把这个位置置为字符‘\0‘?
嵌入式应用实例→电子产品量产工具→网络输入系统的代码分析和上机测试记录(socket网络编程)
Linux嵌入式编程中与线程有关的知识(线程的概念、线程的创建、互斥锁、线程挂起、主线程、如何看查线程的ID等知识点)
解决嵌入式应用实例→电子产品量产工具→业务系统代码中“led按钮”放手后就恢复为红色的bug的调试记录
嵌入式应用实例→电子产品量产工具→业务系统的代码分析和测试(重点:配置文件的解析、UI界面的生成、输入事件的处理)
嵌入式应用实例→电子产品量产工具→对按钮中文字的改进和对函数名进行优化
嵌入式应用实例→电子产品量产工具→业务系统能支持配置文件中的command项(能运行command项中的脚本文件)
常用外设的使用和驱动开发
UART串口
详解Linux的交互式命令行(Shell、TTY子系统、TTY设备、TTY名字的来历、TTY设备文件、几个特殊的TTY设备文件、终端的两个含义、被作为控制台的终端)
Linux的TTY子系统(TTY框架)的重要结构体termios的c_iflag
字段的BRKINT选项和IGNBRK选项的含义【详解串口的BREAK信号】
进程的控制终端规则详解(打开串口设备文件时的标志位O_NOCTTY的详解、守护进程的概念)
Linux的TTY子系统(TTY框架)的重要结构体termios的详解(串口通信参数的配置)
IMX6ULL_Pro开发板的串口应用程序实例(利用TTY子系统去使用串口)
修改IMX6ULL_PRO开发板的设备树文件使开发板启用UART5(串口5)
I2C总线及I2C设备
能进行光照强度测量和距离检测、通信接口为I2C的AP3216C芯片的介绍,并附上它的Datasheet
Linux上的i2c-tools
工具集的详细介绍;并利用它操作IMX6ULL的I2C控制器进而控制芯片AP3216C读取光照值和距离值
IMX6ULL的I2C控制器在Linux的设备树文件中的描述
利用I2C_bus(I2C总线)为挂接在I2C总线上的设备AP3216C编写驱动程序
SPI总线及SPI总线设备
SPI控制器(spi_master)、SPI设备、SPI总线(spi_device与spi_driver的匹配机制)、SPI万能驱动spidev.c
通过万能SPI设备驱动spidev.c来操作挂接在SPI总线上的SPI设备(DAC模块)【spidev.c代码详解、SPI控制器及SPI设备的设备树语句解析】
利用Linux的SPI子系统和SPI总线写出SPI设备(DAC模块)的驱动
STM32的HLA和FreeRTOS开发相关
STM32_HAL开发环境搭建【Keil(MDK-ARM)、STM32F1xx_DFP、 ST-Link、STM32CubeMX】
STM32CubeMX的使用方法:使用STM32CubeMX生成基于STM32F103+HLA库的初始化代码,并在此基础上写出LED点灯程序
使用STM32CubeMX和Keil在STM32上创建并运行一个简单的FreeRTOS多任务程序
Qt开发相关
QtCreator在配置Compilers时,有一个叫ABI的选项,那么什么是ABI?
Qt开发环境QtCreator的安装、配置【涉及到利用Buildroot编译出eMMC.img、zImage、dtb、u-boot、根文件系统和Qt配置时需要的qmake文件】
第一个Qt开发实例(一个Push Button按钮和两个Label)【包括如何在QtCreator中创建新工程、代码详解、编译、环境变量配置、测试程序运行等】
QtCreator的工程换位置后一定要更换一下Build directory的位置,因为在QtCreator中Build directory是一个绝对路径
QtCreator工程中的代码编辑器找不到sysroot中的头文件的解决方法
第二个Qt开发实例:在Qt中利用GPIO子系统和sysfs伪文件系统实现按钮(Push Button)点击控制GPIO口(效果为LED2灯的灭和亮)
第三个Qt开发实例:利用之前已经开发好的LED驱动在Qt生成的界面中控制LED2的亮和灭
Git代码管理工具的使用
在Windows系统上使用Git将仓库代码克隆拉取到本地、拉取到本地后如果仓库代码有更新,那么如何更新、更新机制又是怎样的?
如何在Ubuntu中利用repo和git地址下载获取imx6ull的BSP
Git(分布式版本控制系统)系统学习笔记【并利用腾讯云的CODING和Windows上的Git工具来实操】
网络开发相关(协议与相关芯片)
MII协议中的“MII back-to-back”的模式是什么意思?RMII协议中存不存在这种模式?
IMX6ULL的公板的以太网控制器(MAC)与物理层(PHY)芯片(KSZ8081RNB)连接的原理图分析(包含各引脚说明以及工作原理)
百问网(100ask)的IMX6ULL开发板的以太网控制器(MAC)与物理层(PHY)芯片(LAN8720A)连接的原理图分析(包含各引脚说明以及工作原理)
物理层芯片的Auto-negotiation(自动协商)的详细解释
对网络物理层芯片LAN8720A的复位信号(复位引脚nRST)的详细分析(顺便也介绍下其软复位的操作和导常情况解决方法)
开发板硬件和偏底层逻辑相关
恩智浦半导体(NXP)的 i.MX_6ULL嵌入式处理器介绍
芯片通用知识
芯片引脚的Buffer Types(缓冲类型)是什么东西?并在此博文中收集各芯片的Buffer Types说明表
如果某个寄存器的名字中含有Strap这个单词,表示其值由是通过外部引脚的电平状态来决定的
芯片的Date sheet中常常提到的信号(引脚)的断言(assertion)和去断言(deassertion)是什么意思?
设备的名字中经常出现的“Realtek”是怎么回事【中国台湾的Realtek(瑞昱半导体)介绍-Logo为蓝色螃蟹-主营网卡、蓝牙、音频、交换芯片】
处理器芯片相关
IMX6ULL的IOMUXC寄存器和SNVS复用寄存器似乎都是对引脚指定复用功能的,那二者有何区别?
IMX6ULL的ALT0、ALT1、ALT2、ALT3、ALT4等是啥意思?
C/C++编程语言相关
C/C++函数参数传递时值传递、指针传递、引用传递的区别是什么?
关于C/C++中typedef为一个类型(包括结构体类型)同时定义多个别名、定义指针类型别名的语法
C/C++包含头文件的两种方式:尖括号方式 (<>)和双引号方式 (““)的区别
C/C++的关键词static加在函数定义前、全局变量前和函数内的变量前有什么作用?(分别是限制函数和全局变量的作用域在当前文件内和函数调用的整个期间内保留其值而不是每次初始化其值)
C语言中,const 关键字的本质作用是什么?const char *point1、char *const point2、const char *const point3等的区别是什么?
C语言中怎样将NULL定义为空指针?空指针的具体值其实为0哈,即地址值为0的指针为空指针。
在C语言中,访问结构体的成员时,什么时候用.
【符号点】,什么时候用符号->
?
C语言中A文件中的代码调用B文件中的某个函数,假如B文件中这个函数需要某个头文件中定义的某些东西,那么A文件中要不要包含这个头文件需要视具体情况而定。
C语言中,假如我一个C文件包含了两个头文件,而两个头文件中都有对同一个宏或结构体的定义,编译时如何处理?
C语言初始化一个结构体的时候,并不是是否每个成员都需要初始化,那没有初始化的量值为多少呢?
C语言的strncpy()函数在什么情况下会添加字符串末尾符‘\0‘,又什么情况下不会添加?
在一个C工程文件中,如果一个函数要引用另一个文件中的函数,并不是用extern进行声明,而是在包含的头文件中进行声明
在C语言中,字符指针“char *name”和字符数组“char name[]“各自适用哪些场景?
Linux编程中C函数定义的第一行中出现的关键字“__init”是什么意思?
C语言带参数的宏定义的相关知识汇总(最常用的形式、带标记分隔符##的形式…)
在C++中,成员变量必须在对象构造完成前初始化,但初始化的方式有多种…
详解C++中引用传递的概念;C++类中的引用成员为什么初始化后就不能更改了?
C++类定义中的关键字public 、protected 、private的详细介绍【定义类成员的访问权限属性和基类的成员的访问权限属性】
C++类的初始化列表是怎么一回事?哪些东西必须放在初始化列表中进行初始化,原因是什么?