一文刨析C/C++全局常量的定义

news2024/11/20 1:42:49

目录

文件特性常量

文件常量

堆常量

EOF, WEOF

errno 常量

数学常量

数学错误常量

共享常量

转换模式常量

文件读/写访问常量

NULL (CRT)

stdin, stdout, stderr


文件特性常量

语法

#include <io.h>

备注

这些常量指定由函数指定的文件或目录的当前特性。

特性可以通过以下清单常量表示:

返回的常量说明
_A_ARCH存档。 每当通过 BACKUP 命令更改或清除文件时进行设置。 值:0x20
_A_HIDDEN隐藏文件。 使用 DIR 命令时通常不可见,除非使用 /AH 选项。 返回有关具有此属性的普通文件和文件的信息。 值:0x02
_A_NORMAL正常。 可以不受限制地读取或写入的文件。 值:0x00
_A_RDONLY只读。 无法打开文件进行写入,并且无法创建同名的文件。 值:0x01
_A_SUBDIR子目录。 值:0x10
_A_SYSTEM系统文件。 使用 DIR 命令时通常不可见,除非使用 /AS 选项。 值:0x04

可使用 OR 运算符 (|) 组合多个常量。

文件常量

语法

#include <fcntl.h>

备注

由这些常量中的一个或多个常量构成的整数表达式确定允许进行的读取或写入操作的类型。 它由将一个或多个常量与翻译模式常量组合在一起形成。

文件常量如下所示:

返回的常量说明
_O_APPEND在每次执行写入操作前,将文件指针重新定位到文件尾。
_O_CREAT创建并打开用于写入的新文件;如果存在 filename 文件,则常量无效。
_O_EXCL如果由 filename 指定的文件存在,则返回一个错误值。 仅在与 _O_CREAT 一起使用时适用。
_O_RDONLY打开文件以仅读取;如果提供此标志, _O_RDWR 则 _O_WRONLY 无法提供。
_O_RDWR打开用于读取和写入的文件;如果提供此标志, _O_RDONLY 则 _O_WRONLY 无法提供。
_O_TRUNC打开现有文件并将其截断为零长度;此文件必须具有写入权限。 销毁此文件的内容。 如果给定此标志,则无法指定 _O_RDONLY
_O_WRONLY仅打开用于写入的文件;如果提供此标志, _O_RDONLY 则 _O_RDWR 无法提供。

堆常量 

语法

#include <malloc.h>

备注

这些常量提供表示堆状态的返回值。

返回的常量含义
_HEAPBADBEGIN找不到初始标头信息或无效。
_HEAPBADNODE找到错误节点,或堆已损坏。
_HEAPBADPTR_pentry_HEAPINFO结构字段不包含指向堆的有效指针, (_heapwalk例程仅) 。
_HEAPEMPTY堆尚未初始化。
_HEAPEND已成功到达堆的结尾处(仅限 _heapwalk 例程)。
_HEAPOK堆是一致的(仅限 _heapset 和 _heapchk 例程)。 到目前为止没有错误; _HEAPINFO 结构仅包含有关下一个条目 (_heapwalk 例程的信息) 。

EOFWEOF

语法

#include <stdio.h>

备注

EOF 当文件结束 (或在某些情况下,遇到错误) 时,I/O 例程将返回。

WEOF 生成返回值(类型) wint_t用于向宽流末尾发出信号,或报告错误条件。

errno 常量

语法

#include <errno.h>

备注

常 errno 量是针对 errno 各种错误条件分配给的值。

ERRNO.H 包含 errno 值的定义。 但是,并非 ERRNO.H 中给定的提供定义都可用于 32 位 Windows 操作系统。 ERRNO.H 中的某些值的存在是为了保持与 UNIX 系列操作系统的兼容性。 32 位 Windows 操作系统中的 errno 值是 XENIX 系统中的 errno 值的子集。

errno 值不一定与由从 Windows 操作系统进行的系统调用返回的实际错误代码相同。 若要访问实际操作系统错误代码,请使用包含此值的 _doserrno 变量。

支持以下 errno 值:

返回的常量说明
E2BIG自变量列表太长。7
EACCES权限被拒绝。 文件的权限设置不允许指定访问。 尝试访问文件 (,在某些情况下,目录) 与文件的属性不兼容。

例如,尝试从未打开的文件读取时,可能会发生错误。 或者,尝试打开现有只读文件进行写入,或打开目录而不是文件。 在 MS-DOS 操作系统版本 3.0 以及更高版本下,EACCES 也可能表示锁定或共享冲突。

在尝试重命名文件或目录或者删除现有目录时也可能发生错误。
13
EAGAIN没有更多进程、没有足够内存或达到最大嵌套级别。 尝试创建新进程失败,因为没有更多的进程槽,或者没有足够的内存,或者达到最大嵌套级别。11
EBADF文件编号错误。 有两个可能的原因:1) 指定的文件描述符不是有效值或未引用打开的文件。 2) 尝试写入到已打开进行只读访问的文件或设备。9
EBUSY设备或资源忙碌。16
ECHILD没有生成的进程。10
EDEADLK将会发生资源死锁。36
EDEADLOCK与 EDEADLK 相同,以便与早期的 Microsoft C 版本兼容。36
EDOM数学自变量。 数学函数的参数不在函数的域中。33
EEXIST存在文件。 尝试创建已存在的文件。 例如,在 _open 调用中指定 _O_CREAT 和 _O_EXCL 标志,但命名的文件已存在。17
EFAULT地址错误。14
EFBIG文件太大。27
EILSEQ非法字节序列(例如,在 MBCS 字符串中)。42
EINTR函数中断。4
EINVAL无效的参数。 为某个函数的自变量之一给定了无效值。 例如,当通过调用 fseek) 将文件指针定位到源时给定的值位于文件开头之前 (。22
EIOI/O 错误。5
EISDIR是目录。21
EMFILE打开的文件太多。 没有更多文件说明符可用,因此无法打开更多文件。24
EMLINK链接太多。31
ENAMETOOLONG文件名太长。38
ENFILE系统中打开的文件太多。23
ENODEV没有此设备。19
ENOENT没有此文件或目录。 指定的文件或目录不存在或找不到。 每当指定的文件不存在或路径的组件未指定现有目录时,可能会发生此消息。2
ENOEXEC执行格式错误。 尝试执行无效的可执行文件或具有无效可执行文件格式的文件。8
ENOLCK无可用锁。39
ENOMEM无法为尝试的运算符提供足够的内存。 例如,当内存不足可用于执行子进程或无法满足调用中的 _getcwd 分配请求时,可能会出现此消息。12
ENOSPC设备上没有剩余空间。 设备上没有可供写入的其他空间(例如,当磁盘已满时)。28
ENOSYS功能不受支持。40
ENOTDIR不是目录。20
ENOTEMPTY目录不为空。41
ENOTTY不适当的 I/O 控制操作。25
ENXIO没有此设备或地址。6
EPERM不允许执行该操作。1
EPIPE管道损坏。32
ERANGE结果太大。 数学函数的自变量太大,造成结果中的有效位部分或全部丢失。 当参数大于预期值时(例如,当 _getcwd 的 buffer 参数大于预期值时),在其他函数中也可能发生此错误。34
EROFS只读文件系统。30
ESPIPE搜寻无效。29
ESRCH没有此进程。3
EXDEV跨设备链接。 尝试将文件移至不同的设备(使用 rename 函数)。18
STRUNCATE字符串复制或串联导致字符串被截断。 请参阅 _TRUNCATE。80

下列值支持 POSIX 的兼容性:

返回的常量说明
EADDRINUSE正在使用的地址。100
EADDRNOTAVAIL地址不可用。101
EAFNOSUPPORT地址系列不受支持。102
EALREADY连接已经进行。103
EBADMSG错误消息。104
ECANCELED操作已取消。105
ECONNABORTED连接已中止。106
ECONNREFUSED连接被拒绝。107
ECONNRESET连接重置。108
EDESTADDRREQ需要目标地址。109
EHOSTUNREACH无法访问主机。110
EIDRM已删除标识符。111
EINPROGRESS操作正在进行。112
EISCONN已连接。113
ELOOP符号链接级别过多。114
EMSGSIZE消息大小。115
ENETDOWN网络中断。116
ENETRESET网络重置。117
ENETUNREACH无法访问网络。118
ENOBUFS无缓冲空间。119
ENODATA无可用消息。120
ENOLINK无链接。121
ENOMSG无消息。122
ENOPROTOOPT无协议选项。123
ENOSR无流资源。124
ENOSTR不是流。125
ENOTCONN未连接。126
ENOTRECOVERABLE状态不可恢复。127
ENOTSOCK不是套接字。128
ENOTSUP不支持。129
EOPNOTSUPP不支持操作。130
EOTHER其他。131
EOVERFLOW值太大。132
EOWNERDEAD所有者亡。133
EPROTO协议错误。134
EPROTONOSUPPORT协议不受支持。135
EPROTOTYPE协议类型错误。136
ETIME流超时。137
ETIMEDOUT已超时。138
ETXTBSY文本文件繁忙。139
EWOULDBLOCK操作将阻塞。140

数学常量

常见的数学常量提供了多个预定义的预处理器宏。

语法

#define _USE_MATH_DEFINES // for C++
#include <cmath>

#define _USE_MATH_DEFINES // for C
#include <math.h>

备注

下列符号定义了其所指示的表达式的值:

符号表达式
M_Ee2.71828182845904523536
M_LOG2Elog2(e)1.44269504088896340736
M_LOG10Elog10(e)0.434294481903251827651
M_LN2ln(2)0.693147180559945309417
M_LN10ln(10)2.30258509299404568402
M_PIpi3.14159265358979323846
M_PI_2pi/21.57079632679489661923
M_PI_4pi/40.785398163397448309616
M_1_PI1/pi0.318309886183790671538
M_2_PI2/pi0.636619772367581343076
M_2_SQRTPI2/sqrt(pi)1.12837916709551257390
M_SQRT2sqrt(2)1.41421356237309504880
M_SQRT1_21/sqrt(2)0.707106781186547524401

数学常量未在标准 C/C++ 中定义。 若要使用它们,必须先定义 _USE_MATH_DEFINES,然后包括 <cmath> 或 <math.h>

在“发布模式”下生成项目时,文件 <ATLComTime.h> 包含 <math.h>。 如果在同时包含 <ATLComTime.h> 的项目中使用了一个或多个数学常量,则在包含 <ATLComTime.h> 前必须先定义 _USE_MATH_DEFINES


数学错误常量

语法

#include <math.h>

备注

运行库的数学例程可生成数学错误常量。

如下所述,这些错误对应于 MATH.H 中定义的异常类型,并在发生数学错误后由 _matherr 函数返回。

返回的常量含义
_DOMAIN函数的自变量位于函数域的外部。
_OVERFLOW结果太大而无法在函数的返回类型中表示。
_PLOSS发生了有效位部分丢失的情况。
_SING自变量奇异性:函数的自变量具有非法值。 (例如,将值 0 传递到需要非零值的函数。)
_TLOSS发生了有效位完全丢失的情况。
_UNDERFLOW结果太小而无法表示。

共享常量

文件共享模式的常量。

语法

#include <share.h>

备注

该 shflag 参数确定共享模式,该模式由一个或多个清单常量组成。 这些常量可以与 oflag 参数结合使用, (请参阅 文件常量) 。

下表列出了常量及其含义:

返回的常量含义
_SH_DENYRW拒绝对文件的读写访问权限
_SH_DENYWR拒绝对文件的写访问权限
_SH_DENYRD拒绝对文件的读访问权限
_SH_DENYNO允许读写访问权限
_SH_SECURE设置安全模式(共享读取、独占写入访问权限)。

转换模式常量

语法

#include <fcntl.h>

备注

_O_BINARY 和 _O_TEXT 清单常数将决定文件(_open 和 _sopen)的转换模式或流 (_setmode) 的转换模式。

允许的值为:

说明
_O_TEXT在文本(已转换)模式下打开文件。 输入时回车符–换行符 (CR-LF) 组合将转换为单个换行符 (LF)。 输出时换行符将转换为 CR-LF 组合。 CTRL+Z 也将在输入时解释为文件尾字符。 在打开以进行读取或读取和写入的文件中,fopen 将检查文件末尾的 Ctrl+Z 并在可能的情况下将其移除。 由于使用 fseek 和 ftell 函数在以 CTRL+Z 结尾的文件内移动可能会导致 fseek 在文件末尾附近行为不当而被删除。
_O_BINARY在二进制(未转换)模式下打开文件。 禁止上述的转换。
_O_RAW与 _O_BINARY 相同。 支持 C 2.0 兼容性。

文件读/写访问常量

语法

#include <stdio.h>

备注

这些常量指定为文件请求的访问类型(“a”、“r”或“w”)。 可以使用访问类型来指定转换模式(“b”或“t”)和 模式(“c”或“n”)。

访问类型如下表中所述:

访问类型说明
"r"打开以便读取。 如果文件不存在或找不到,则打开该文件的调用将失败。
"w"打开用于写入的空文件。 如果给定文件存在,则其内容会被销毁。
"a"打开以在文件末尾写入 (追加) ;如果文件不存在,请先创建该文件。 所有写入操作均在文件末尾发生。 尽管可以使用或rewind重新定位fseek文件指针,但在执行任何写入操作之前,它始终会移回到文件的末尾。
"r+"打开以便读取和写入。 如果文件不存在或找不到,则打开该文件的调用将失败。
"w+"打开用于读取和写入的空文件。 如果给定文件存在,则其内容会被销毁。
"a+"与 “”a相同, 但也允许读取。

指定“r+”、“w+”或“a+”类型时,允许读取和写入(文件将处于打开状态以进行“更新”)。 但是,在读取与写入之间切换时,必须有中间 fflushfsetposfseek 或 rewind 操作。 可以为 fsetpos 或 fseek 操作指定当前位置。

 


NULL (CRT)

NULL 是用于许多指针操作和函数的 null 指针值。 它等效于 0。 NULL 在以下头文件中定义:CRTDBG。H、LOCALE。H、STDDEF。H、STDIO。H、STDLIB。H、STRING。H、TCHAR。H,时间。H 和 WCHAR.H.

stdinstdoutstderr

语法

FILE *stdin;
FILE *stdout;
FILE *stderr;
#include <stdio.h>

备注

stdinstdoutstderr全局常量指针是输入、输出和错误输出的标准流。

默认情况下,标准输入是从键盘读取的,而标准输出和错误输出将打印到屏幕。

下列流指针可用于访问标准流:

指针Stream
stdin标准输入
stdout标准输出
stderr标准错误

这些指针可用作函数自变量。 一些函数(如 getchar 和 putchar)将自动使用 stdin 和 stdout

这些指针是常量,不能分配新值。 freopen 函数可用于将流重定向到磁盘文件或其他设备。 操作系统使您可以在命令级别重定向程序的标准输入和输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件杂志软件杂志社软件编辑部2022年第9期目录

基金项目论文 基于Blockly和树莓派的多模态控制智能车 杨杰;宋俊炜;吴思玮;魏苏州;赖晓晨; 1-313 基于神经网络的网络异常研究与实现 郭稼逸; 4-6《软件》投稿&#xff1a;cnqikantg126.com 计算机视觉技术在电力系统自动化中的应用 陈海远;顾雅青; 7-9 基于优…

【吴恩达机器学习笔记】十二、降维

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4e3;专栏定位&#xff1a;为学习吴恩达机器学习视频的同学提供的随堂笔记。 &#x1f4da;专栏简介&#xff1a;在这个专栏&#xff0c;我将整理吴恩达机器学习视频的所有内容的笔记&…

PM说 | 一文全方位解析C端用户的评论功能!

随着各种自媒体、资讯平台的肆意发展&#xff0c;评论区逐渐成为各路英雄豪杰的必争之地。在评论区&#xff0c;我们可以与”“杠精”来一场遭遇战&#xff0c;邂逅文人墨客&#xff0c;看一场舌战群雄大戏。 评论区越热闹&#xff0c;说明产品越活跃&#xff0c;用户粘性高&a…

iwebsec靶场 文件上传漏洞通关笔记1-第01关 前端js过滤绕过

目录 第01关 前端js过滤绕过 1.禁用js法 &#xff08;1&#xff09;禁用js &#xff08;2&#xff09;刷新页面使生效 &#xff08;3&#xff09;上传脚本 &#xff08;4&#xff09;开启js并刷新页面 2.修改页面法1 &#xff08;1&#xff09;右键查询元素 &#xff…

docker安装和info信息

docker 容器的历史&#xff1a; 1、Chroot Jail 就是我们常见的 chroot 命令的用法。它在 1979 年的时候就出现了&#xff0c;被认为是最早的容器化技术之一。 它可以把一个进程的文件系统隔离起来。 2、The FreeBSD Jail Freebsd Jail 实现了操作系统级别的虚拟化&#…

csapp 读书笔记

第二章&#xff1a;信息的表示和处理 历史上因程序bug导致重大事故的情况很多是由数字溢出&#xff0c;缓冲区溢出导致的。 本章主要讲的是基本数据类型的(IEEE)表示&#xff0c;大小端&#xff0c;以及二进制位运算的骚操作案例。 第三章&#xff1a;程序的机器级表示 本章…

名窑讲坛:钧瓷“神、奇、妙、绝”四大特色之“妙”——纹路

文/倾灵叶 钧瓷以“入窑一色&#xff0c;出窑万彩”的神奇窑变著称于世。 钧瓷的纹路是经自然窑变形成的具有自身典型艺术特征釉面装饰&#xff0c;是特殊的釉料和独特的烧成工艺的产物&#xff0c;与其他窑系陶瓷作品人工雕刻、压刻和绘制而成的纹饰存在着本质的不同&#xf…

12家硬件厂商发布飞桨生态发行版 软硬一体协同发展

11月30日&#xff0c;由深度学习技术及应用国家工程研究中心主办、百度飞桨承办的WAVE SUMMIT2022深度学习开发者峰会如期举行。峰会上&#xff0c;百度AI技术生态总经理马艳军发布了飞桨深度学习平台的最新技术和生态进展&#xff0c;全新发布飞桨开源框架2.4版本&#xff0c;…

Fast Report .NET 2023.1 Crack

Fast Report .NET 适用于 .NET 6、.NET Core、Blazor、ASP.NET、MVC 和 Windows 窗体的全功能报告库。它可以在 Microsoft Visual Studio 2022 和 JetBrains Rider 中使用。 适用于 .NET 6、.NET Core、Blazor、ASP.NET、MVC 和 Windows 窗体的全功能报告库。它可以在 Microso…

计算机毕业论文java毕业设计选题源代码ssm的校园单车自行车租赁系统|租车系统

&#x1f496;&#x1f496;更多项目资源&#xff0c;最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 3.2.1技术可行性&#xff1a;技术背景 系统的开发环境和配置都是可以自行安装的&#xff0c;使用比较成熟的开发工具和数据库进行对系统用户…

Highlight_Matching_Pair问题解决

Highlight_Matching_Pair问题解决1 <SNR>20_Highlight_Matching_Pair1.1 提示的问题1.2 出发问题出现的条件1.2.1 访问到“&#xff08;&#xff09;”时会出现1.2.1 访问到不成对的“{}”时会出现2 解决办法2.1 首先确认matchparen.vim是否最新2.2 将vim更新到最新的版本…

数据结构—查找方法改进流程

文章目录哈希表哈希表 >红黑树—1—> 哈希表缺点—2—> 二维数组—3—> 数组加链表—4—> 树—5—> 有序二叉树—6—> 平衡二叉树—7—> 多叉树—8—> 红黑树红黑树的特点红黑树和链表的选择———————————————————————————…

ansible的主机清单和Playbook(剧本)

一、inventory---主机清单 1.1 支持对主机分组&#xff0c;每个组内可以定义多个主机&#xff0c;可以把一台主机分别放在两个组内。 把.10到.100的主机全部放在这个组里面&#xff08;/etc/ansible/hosts:配置文件&#xff09; 有的主机不是以ip地址放在主机清单里的&#x…

企业实施SRM系统应该避开哪些误区?

近年来&#xff0c;SRM供应商协同管理系统逐渐在各行各业中得到广泛运用&#xff0c;许多企业在SRM选型时投入了大量的时间、资源和精力&#xff0c;但系统上线后的效果却并不理想。SRM选型时常见的误区主要有以下几种&#xff1a; 误区一&#xff1a;头痛医头脚痛医脚&#x…

[附源码]计算机毕业设计人体健康管理appSpringboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【从零开始学习深度学习】6.使用torchvision下载与查看图像分类数据集Fashion-MNIST

目录1.1 获取Fashion-MNIST数据集2.2 读取小批量小结图像分类数据集中最常用的是手写数字识别数据集MNIST。但大部分模型在MNIST上的分类精度都超过了95%。为了更直观地观察算法之间的差异&#xff0c;我们将使用一个图像内容更加复杂的数据集Fashion-MNIST。 本节我们将使用to…

博图Modbus组态及参数设定源码

1、组态选择 协议为Modbus,可在程序里设置通讯方式 2、参数初始化设置 3、选择伺服Modbus 地址 4、写入负值&#xff0c;两个字都必须是负值 5、接线方式 伺服端&#xff1a;驱动器通过通讯连接器与计算机相连&#xff0c;使用者可利用 MODBUS 通讯结合汇编语言来操作驱动器&…

运放失调电压失调电流,计算输入电压信号大小,设计反向放大器

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

销售抓住客户心理的话术

由于销售会与各种各样的人打交道&#xff0c;因此销售也是最容易洞察客户心理的职业&#xff0c;优秀的销售懂得如何抓住客户的心理&#xff0c;从而挖掘客户的需求和痛点&#xff0c;进一步促进成交。 前言 由于销售会与各种各样的人打交道&#xff0c;因此销售也是最容易洞察…

【NC65】主子表单据按照单表结构展现 节点客开

需求描述: 需要将【采购入库】按照【采购订单关闭】节点的形式展现数据。 客开思路: 功能注册增加功能节点,(40080603)勾选启用。菜单注册增加 菜单 并关联 功能节点(40080603)。初始化 单据模板,查询模板采购入库单主子表汇总VO是PurchaseInViewVO ,系统里其他单据节点 …