c-standard-library相关内容

使用标准C库将文件读取到内存-Windows过早识别EOF,但可以在Mac、Linux上运行

这感觉像是最愚蠢的问题,但希望有人能帮上忙。很抱歉这篇帖子太长了,但我想提供足够的细节,这样人们就不会建议我已经尝试过的东西。 我已经隔离了我编写的一个C程序的问题,该程序应该在Mac、Linux和Windows上提供。该程序无法在Windows上运行,但在Mac和Linux上正常运行,并且在最近的更改之前曾在Windows上运行。 失败的直接原因与将文件读入内存挡路有关-所以我将该代 ..
发布时间:2022-03-02 20:09:42 其他开发

为什么有些内置的 Python 函数只有通过?

我想看看一个math.py函数是怎么实现的,但是当我在PyCharm中打开文件时发现所有函数都是空的,还有一个简单的pass.例如: def ceil(x): # 真实签名未知;从 __doc__ 恢复"""细胞(x)将 x 的上限作为浮点数返回.这是最小的积分值>= x."""经过 我猜这是因为所使用的函数实际上来自 C 标准库.它是如何工作的? 解决方案 PyCharm 在骗你.您 ..
发布时间:2022-01-08 09:13:01 Python

将 C 标准库中的 C 函数定义为宏

我一直在阅读有关 C 头文件的 The Open Group Base Specifications 和 Posix Programmers 手册页,这句话反复出现“以下内容应声明为函数,也可以定义为宏",但我不确定是什么这意味着.从声明的函数中创建宏有什么意义.这不会造成命名空间冲突吗?还有你为什么要这样做? 解决方案 宏从不与其他命名空间冲突;首先处理宏并自动“获胜". 标准的C ..
发布时间:2021-06-18 20:20:11 其他开发

关于操作数求值顺序的矛盾

当我从 deitel c 学习 C 中的递归函数时,我读到了这句话: 标准 C 没有指定大多数运算符(包括 +)的操作数的计算顺序. 但书中也说: 从左到右'+'的结合性 操作数的求值顺序: 谁能解释一下这是为什么? 解决方案 求值顺序和结合性是两个不同的东西,举个例子: int x = func1() - func2() - func3();//具有int ..

QNAN传递给C标准库函数(例如llrintf):不清楚是否引发FP异常

来自 math.h 的宏 NAN 是安静的NAN: ISO/IEC 9899:2011(E)(添加了重点): 宏 NAN 仅当实现支持浮点类型的静默NaN时,才定义 .它扩展为一个float类型的常量表达式,表示一个安静的NaN . 安静的NaN通常不会导致FP异常的产生.例子: ISO/IEC 9899:2011(E)(添加了重点): 5.2.4.2.2浮 ..

标准是否要求EOF为负?

是否按照标准写成EOF必须为负数? 相反,WEOF不必为负.为什么? wchar_t的情况一定不能与普通char有所不同(除非从char自动升级为int起作用),因为使用char将wchar_t定义为char是完全可以的.标准.因此,必须应用类似的规则. glibc参考中的一些引用: 如果将wchar_t定义为char,则由于参数升级,必须将类型wint_t定义为int. 将wc ..
发布时间:2020-07-20 20:01:48 其他开发

为什么要求islower()和朋友处理EOF?

为什么需要islower()和朋友来处理EOF,而putchar()和朋友则不必呢? 为什么islower()不能像putchar()那样将int视为unsigned char?这是完全有意义的,因为无论如何我们都必须先检查EOF.另请参见为什么putchar(),fputc()和putc()的参数类型不是char? 解决方案 因为我们还是必须先检查EOF. 我们绝对不会. ..
发布时间:2020-07-20 20:01:46 其他开发

strncmp比strcmp的优势?

似乎通常建议使用strncmp比strcmp,这有什么好处?我认为这可能与安全性有关.在这种情况下,如果已知输入字符串之一是文字常量(例如"LiteralString"),是否仍然适用? 更新: 我的意思是,在需要比较整个字符串的同一用户场景下,strncmp可以按以下方式使用.我想知道这是否有意义. strncmp(inputString, "LiternalString", str ..
发布时间:2020-07-20 20:01:43 其他开发

为什么putchar(),fputc()和putc()的参数类型不是char?

有人知道为什么putchar(),fputc()和putc()的参数类型不是char,但是putwchar(),fputwc()和putwc()的参数类型是wchar_t吗?另请参见此和解决方案 答案是“旧版"(或“历史").在C90标准之前,没有函数原型,并且所有函数的所有参数均受默认提升规则的约束,因此char会自动作为int传递(short也会被提升为int,而float到double,以 ..
发布时间:2020-07-20 20:01:40 其他开发

fgetpos/fsetpos和ftell/fseek有什么区别

使用功能fgetpos()和fsetpos()以及使用功能ftell()和fseek()来获取和设置文件位置之间有什么区别? fgetpos()和fsetpos()有什么用处?为什么要使用它们代替ftell()和fseek()? 解决方案 从手册页中我们可以看到ftell和fseek使用long int类型表示文件中的偏移量(位置),因此可能仅限于偏移量可以用long int表示. ..
发布时间:2020-07-20 20:01:38 其他开发

为什么没有"unsigned wchar_t"?和"signed wchar_t"类型?

char的签名未标准化.因此,有signed char和unsigned char类型.因此,使用单个字符的函数必须使用既可以包含有符号字符又可以包含无符号字符的参数类型(此 类型选择为int),因为如果参数类型为char,我们将 在这样的代码中从编译器(如果使用-Wconversion)获取类型转换警告: char c = 'ÿ'; if (islower((unsigned char) ..
发布时间:2020-07-14 03:52:02 其他开发

从标准库中重新定义函数是否违反一定义规则?

#include double log(double) {return 1.0;} int main() { log(1.0); } 假设中的函数log()是在全局命名空间中声明的(实际上这是未指定的,我们只是作此假设),然后它所引用的函数与我们定义的log()函数相同. br> 因此,此代码是否违反了一个定义规则(请参见此处,由于不需要诊断,因此该代码可以 ..

“获取功能...可能不安全”。 -真的吗?

我正在使用MSVC编译一些使用标准库函数的C代码,例如 getenv(), sprintf 和其他设置为 / W3 的警告。 MSVC告诉我: ‘getenv’:此函数或变量可能不安全。考虑改用_dupenv_s。要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS 问题: 从理论上讲,与在其他平台上使用相比,为什么这是不安全的? 实际上在Windows上是否不安全 ..

snprintf:是否有任何C标准提案/计划可以更改此功能的描述?

对于C语言标准是否有任何提案(或计划)来更改snprintf函数的描述(的最后一句),以使(或者我如何(使用哪些链接)自己确定是否有任何此类提案? 是否有任何搜索引擎可以显示有关snprintf功能的所有当前活动的建议? 我目前知道的唯一链接就是这个链接- http://www.open-std .org/jtc1/sc22/wg14/-这是我第一次对任何标准的提案都怀有特殊的想法) 解 ..
发布时间:2020-04-27 05:05:07 其他开发