维基百科上有很好的表述,我只想用一些简单的话来概括一下,以求能在最少的阅读量下清晰地明白他们的用法。
const就是define something that is consistent,用它声明的变量以后就不能改了。注意const指针那个地方,是指针是不变的还是指针指向的内容不变。
static means create something that is visible to the local file. 因为C下面一个文件中声明的东西,比如说函数,在同工程的其他文件中也是可以调用的,用static声明了之后,他就只可以本地使用了。当然了,Technically, "static" has other meanings in C related to persistant storage of local variables in functions across function calls.
一个讲的比较透彻的链接:http://www.linuxforums.org/forum/programming-scripting/164742-static-const-c.html
分享到:
相关推荐
在Linux环境下,设备驱动程序的开发显得尤为重要,因为Linux作为一款开源的操作系统,提供了高度的定制性和灵活性,允许开发者深度介入底层硬件的控制。 #### Linux与设备驱动 Linux是一款基于POSIX和UNIX标准的...
Linux 下无线网卡驱动设计及其配置工具 ...Linux 下无线网卡驱动程序的设计和实现是一个复杂的过程,需要oroughly了解 Linux 内核和网络协议的工作机理,并且需要具备良好的编程能力和 Debug 技巧。
总结,Linux字符设备驱动的设计与实现涉及到内核模块的加载、设备编号的申请与释放、设备驱动的注册与卸载,以及设备文件的创建和操作。通过这个过程,可以深入理解Linux内核与硬件设备间的交互机制,以及内核模块的...
### 如何编写Linux操作系统下的设备驱动程序 #### Linux设备驱动程序概述 Linux作为一种类Unix操作系统,在其下编写的驱动程序的原理与Unix系统的其他变种类似。然而,它与DOS或Windows环境下的驱动程序存在较大...
第1篇 Linux下C语言基础 第1章 Linux简介 1.1 GNU简介 1.2 Linux简介 1.2.1 Linux发展史 1.2.2 Linux发行版 1.2.3 Linux内核版本 1.2.4 Linux与UNIX的关系 1.2.5 Linux在服务器方面的发展 1.2.6 Linux在嵌入式系统...
本文档是关于在Linux操作系统中开发和理解USB设备驱动程序的深入探讨。上一篇文档介绍了Linux系统如何识别并使用一些基本的USB设备。然而,对于系统的内核开发者来说,了解更深层次的USB设备操作和定制是非常必要的...
### Linux下ELF可执行文件载入过程源码分析 #### 引子 在Linux操作系统中,每一个可执行文件在被执行之前都需要经过一系列复杂的加载过程。这个过程涉及到多个内核函数以及用户空间与内核空间的数据交换。本文将对...
- 同时,将`./plugins/asn1/packet-asn1.c`文件第463行的`static const char empty[] = "";`复制到`./gtk/main_menubar.c`文件开头,因为`g_strcmp0()`需要用到`empty`。 **步骤4:安装** 1. 执行`make install`...
### Linux设备驱动(个人总结笔记) #### 一、概述 Linux设备驱动是连接硬件与操作系统的重要桥梁,使得用户可以通过应用程序来间接控制硬件设备。本文档是关于Linux字符设备驱动的学习笔记,主要关注于如何编写一...
Linux操作系统因其开源性和强大的社区支持而成为服务器、嵌入式系统和个人计算机领域的首选操作系统之一。在Linux内核中,设备驱动模型是一个极其重要的组成部分,它负责管理和控制硬件资源,并提供统一的编程接口给...
根据提供的文件信息,“Linux中的步进电机驱动程序”,本文将详细介绍如何在Linux环境下设计和实现一个步进电机的驱动程序。步进电机是一种常见的机电控制元件,在自动化控制系统中有着广泛的应用,例如3D打印机、...
本文将深入探讨Linux下字符设备驱动程序的基本结构和关键组件。 #### 二、驱动程序的概念与重要性 在理解字符设备驱动程序之前,我们需要明确几个概念: 1. **驱动程序与内核的关系**:驱动程序是与内核紧密相连的...
通过本文的介绍,读者应该对Linux下的静态库和动态库有了更深入的理解。这两种库各有优劣,选择哪种取决于具体的应用场景。在实际开发中,了解这些基础知识对于提高开发效率和软件质量至关重要。
static const char rtc[] = "/dev/rtc0"; int main(int argc, char argv) { int fd, retval; struct rtc_time rtc_tm; fd = open(rtc, O_RDONLY); if (fd == -1) { perror(rtc); exit(errno); } /* Read ...
本文介绍了Linux下PCIE架构的关键概念和技术细节,包括I/O资源管理、PCI设备结构以及编写PCIE驱动的基本步骤。掌握这些基础知识可以帮助开发者更好地理解PCIE设备的工作原理,并有效地编写和调试相关的驱动程序。...
static int open_file_descriptors(const char *const paths[]) { // ... 打开文件路径并初始化相关变量 } static inline void initialize_fds(void) { if (g_initialized == 0) { // 初始化文件描述符 } g_...
static const struct spi_device_id oled_spi_id[] = { {"oledspi", 1}, { } }; // OLED SPI驱动注册 static int __init oled_spi_init(void) { // 初始化SPI设备 struct spi_device *spi_dev = spi_new("oled...
### Linux内核中链表和散列表的实现原理揭秘 #### 一、引言 Linux内核作为操作系统的核心部分,在其内部实现上广泛采用了多种高效的数据结构,如数组、链表和散列表等。其中,双向循环链表与散列表是内核中使用...